Фильтрация ListAPIView в 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. Любые идеи?

Ответ 1

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

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/#filtering-against-the-url

Ответ 2

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

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