为什么我的 CursorPagination class 总是 return 与之前的 link 相同?

Why does my CursorPagination class always return the same previous link?

尝试对大型查询集进行分页,以便我可以 return 到我之前所在的相同位置,即使数据已添加到数据库中也是如此。

目前我的页码是class:

from rest_framework.pagination import CursorPagination

class MessageCursorPagination(CursorPagination):
    page_size = 25
    ordering = '-date'

在我看来我有:

from rest_framework.generics import GenericAPIView
from rest_framework.authentication import TokenAuthentication, BasicAuthentication

class MessageViewSet(GenericAPIView):
    permission_classes = (IsAuthenticated, )
    authentication_classes = (TokenAuthentication,)
    pagination_class = pagination.MessageCursorPagination
    serializer_class = serializers.MessageSerializer

    def get(self, request, **kwargs):
        account_id = kwargs.get('account_id', None)
        messages = models.Message.objects.filter(
                account=account_id)

        paginated_messages = self.paginate_queryset(messages)
        results = self.serializer_class(paginated_messages, many=True).data
        response = self.get_paginated_response(results)
        return response

在测试我是否设置正确时,我得到了预期的结果,下一个 link 和前一个 link 的空值。 转到下一个 link 后,我得到一个新的下一个 link、下一组结果和一个前一个 link。 当我继续下一个 link 时,我得到与以前相同的前一个 link,但有下一个、下一个 link 和下一组数据。 无论我去多少次,下一个link 上一个link 保持不变。

为什么之前的link没有更新?

-- 更新--

看来我的问题是因为我在同一天收到了很多消息。按日期排序它会尝试返回到当前光标之前的日期。如何按日期排序,但像使用 id 一样使用光标分页逐步浏览列表?

来自Documentation

正确使用游标分页应该有一个满足以下条件的排序字段:

  • 应该是不变的值,例如时间戳、slug 或其他在创建时仅设置一次的字段。
  • 应该是独一无二的,或者几乎是独一无二的。毫秒精度时间戳就是一个很好的例子。此游标分页的实现使用智能 "position plus offset" 样式,使其能够正确支持非严格唯一值作为排序。
  • 应该是可以强制转换为字符串的不可空值。