如何检测用户是否在Django REST(分页)的最后一页?

时间:2015-09-14 13:35:09

标签: python django pagination django-rest-framework

假设我有一个观点:

class FooPagination(PageNumberPagination):
    page_size = 10

class FooView(ListAPIView):
    serializer_class = FooSerializer
    pagination_class = FooPagination
    def get_queryset(self):
        if self.paginator.?
            # do something special

如何检测用户是否在Django REST的最后一页(分页)?

更新如果我尝试:

print(self.paginator.get_next_link())

我明白了:

Exception Type: AttributeError
Exception Value: 'FooPagination' object has no attribute 'page'
Exception Location: C:\Users\Daniel\venvs\brook\lib\site-packages\rest_framework\pagination.py in get_next_link, line 297

我想我的尝试是不可能的,因为在指定查询集之前,分页器不知道它是否在最后一页上。鸡肉和鸡蛋的情况。

1 个答案:

答案 0 :(得分:1)

要使 self.paginator.get_next_link()起作用,您必须使用 self.paginate_queryset(self.queryset)。通常,这在视图方法中使用,例如list()而不是get_queryset()(两者都可以使用!)。

然后,使用

 if not self.paginator.get_next_link():
     #  You're in last page
     #  your code goes here