Django-rest-framework中的过滤ListAPIView

28

我正在使用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个回答

43

我已经找到了解决方案。

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


4

我知道现在可能有些晚了,但我写了一个小应用程序,可以扩展ListAPIView并使其更容易实现。请查看以下链接:

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


试着提供一个具体的应用示例,而不仅仅是链接到它。尽管它现在看起来已经过时了。 - gdvalderrama
哦,回到2015年,我以为在自述文件中有一个例子的存储库链接就足够了,抱歉。 - Angel Velásquez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接