25

我正在使用 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. 有任何想法吗?

4

2 回答 2

39

我找到了解决方案

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

于 2013-05-25T20:22:23.877 回答
4

我知道这已经很晚了,但我写了一个小应用程序,它扩展了 ListAPIView 并且更容易做到这一点,检查一下:

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

于 2015-10-19T01:50:00.170 回答