Фильтрация списка APIView в django-rest-framework

Я использую ListAPIView, но я не могу отфильтровать результаты. Мой код:

class UserPostReadView(generics.ListAPIView):
    serializer_class = PostSerializer
    model = serializer_class.Meta.model
    queryset = model.objects.order_by('-post_time')
    lookup_field = 'poster_id'
    paginate_by = 100

В этом случае, lookup_field игнорируется, но в документации сказано, что он поддерживается и для этого класса. Если я попытаюсь реализовать кастом get по общему мнению, я не знаю, как переопределить paginate_by, Есть идеи?

2 ответа

Решение

Я нашел решение

class UserPostsReadView(generics.ListAPIView):
    serializer_class = PostSerializer
    model = serializer_class.Meta.model
    paginate_by = 100
    def get_queryset(self):
        poster_id = self.kwargs['poster_id']
        queryset = self.model.objects.filter(poster_id=poster_id)
        return queryset.order_by('-post_time')

Источник: http://www.django-rest-framework.org/api-guide/filtering/

Я знаю, что опоздал на это, но я написал небольшое приложение, которое расширяет список ListAPIView и сделать это проще, проверьте это:

https://github.com/angvp/drf-lafv

Другие вопросы по тегам