Задать вопрос
@Durilka96

Как на стороне django обрабатывать несколько параметров из POST запроса?

Парни можете пожалуйста примерчики скинуть ссылкой с каких-нибудь рабочих проектов с django rest framework, как из POST запроса извлекать несколько параметров (3-5) для фильтрации, как правильнее это во views прописывать, чтобы по человечески было. Смотрел ссылку https://www.django-rest-framework.org/api-guide/fi... , но сомнения по поводу
if param_example is not None:
            ....

как-то не укладывается, как можно так несколько параметров обрабатывать, а так получается очень много вариаций для фильтрации получается...
Для примера сейчас у меня фильтруется вот так, но я думаю что такой подход корявый и можно реализовать лучше, с лучшим масштабированием в зависимости от количества параметров:
class CatalogDisksViewSet(viewsets.ModelViewSet):
    def get_queryset(self):
        queryset = CatalogDisks.objects.all()
        parameterSize = self.request.query_params.get('size-disk')
        parameterFilterPrice = self.request.query_params.get('filter-price')
        if(parameterSize and parameterFilterPrice=='null'):
            parameterSize = [float(x) for x in parameterSize.split(",")]
            queryset = CatalogDisks.objects.all().filter(size__size__in=parameterSize)
        elif (parameterSize=='' and parameterFilterPrice == 'up'):
            queryset = CatalogDisks.objects.order_by('price')
        elif (parameterSize=='' and parameterFilterPrice == 'down'):
            queryset = CatalogDisks.objects.order_by('-price')
        elif (parameterSize!='' and parameterFilterPrice=='up'):
            parameterSize = [float(x) for x in parameterSize.split(",")]
            queryset = CatalogDisks.objects.order_by('price').filter(size__size__in=parameterSize)
        elif (parameterSize!='' and parameterFilterPrice=='down'):
            parameterSize = [float(x) for x in parameterSize.split(",")]
            queryset = CatalogDisks.objects.order_by('-price').filter(size__size__in=parameterSize)

        return queryset

    serializer_class = CatalogDisksSerializer
    pagination_class = PaginationDisks
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]
  • Вопрос задан
  • 326 просмотров
Подписаться 2 Комментировать
Подписчики вопроса 2 К ответам на вопрос (0)