FalseHuman
@FalseHuman
Не гений, не миллиардер, не плэйбой, не филантроп

Почему не работает фильтрация django-filters?

При данной конструкции не работает фильтрация django-filters
class Ads(generics.ListCreateAPIView):
    queryset = Ad.objects.all().order_by('id')
    serializer_class = AdSerializer
    filter_backends = (filters.DjangoFilterBackend,)
    filterset_class = ProductFilter

    def list(self, request):
        queryset = self.get_queryset()
        print(queryset)
        serializer = AdSerializer(queryset, many=True)
        return Response({'info': serializer.data})

А при такой работает:(
class Ads(generics.ListCreateAPIView):
    queryset = Ad.objects.all().order_by('id')
    serializer_class = AdSerializer
    filter_backends = (filters.DjangoFilterBackend,)
    filterset_class = ProductFilter

Мне нужно выводить данные именно при помощи 1 варианта. В чём ошибка?
  • Вопрос задан
  • 532 просмотра
Решения вопроса 1
PashaDem
@PashaDem
Python Developer
Исходники DRF в помощь)
Если ты заглянул бы в ListCreateApiView, то увидел бы, что он наследуется от миксинов, а зайдя в миксин, который отвечает за список увидел бы:641035931a02b118112176.png
Обрати внимание на 2-ю строчку, там идет вызов self.filter_queryset, который и будет вызывать заданный фильтр. А ты переопределил list и не вызвал этот метод, поэтому все не работает)
Успехов))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы