【问题标题】:How to detect if user in on the last page in Django REST (pagination)?如何检测用户是否在 Django REST(分页)的最后一页上?
【发布时间】:2015-09-14 13:35:09
【问题描述】:

假设我有一个观点:

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

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

【问题讨论】:

  • 尝试使用 has_next() 它会告诉你分页器是否有下一页可用
  • self.paginator.has_next() 给出异常类型:AttributeError,异常值:'FooPagination' 对象没有属性'has_next'。

标签: python django pagination django-rest-framework


【解决方案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

【讨论】:

    猜你喜欢
    • 2017-12-21
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多