使用Django Rest Framework将kwargs数据传递给自定义分页器

时间:2015-12-01 18:04:09

标签: django pagination django-rest-framework

我有一个自定义分页符,需要访问kwargs参数pk给出类似这样的网址。

r'^(?P<pk>[0-9]+)/stuff/$'

这就是我现在正在做的事情,但感觉有点hackish。 这是我的观点。

class StuffList(ListAPIView):

    serializer_class = MySerializer
    pagination_class = MyPagination

    def get_queryset(self):
        self.request.kwargs = self.kwargs
        return Stuff.objects.all()

然后,在我的paginator中,当请求对象作为参数传递给paginate_queryset时,我可以通过它访问kwargs。

def paginate_queryset(self, queryset, request, view=None):
    """Returns paginated queryset."""
    self.pk = request.kwargs.get('pk')
    pass

是否有其他方法可以从请求对象访问它而无需在get_queryset中手动将kwargs添加到其中?我发现它很奇怪,因为我可以轻松地获取大量有关请求对象的信息,但似乎无法简单地获取url kwargs,这迫使我自己添加它们。谢谢!

1 个答案:

答案 0 :(得分:-1)

根据文档,访问实例对象上的kwargs是有效的:http://www.django-rest-framework.org/api-guide/filtering/#filtering-against-the-url