【问题标题】:Ordering cursor pagination with Django-Rest使用 Django-Rest 排序光标分页
【发布时间】:2016-04-27 12:54:29
【问题描述】:

我正在使用 Django-Rest-Framework 构建一个 API 并设置光标分页 - 默认情况下按“已创建”过滤器排序,这对某些视图非常有效。

但我有这个我想按其他字段(last_update 和访问)排序。我将排序字段放在我的视图中,但不起作用。

class StationList(generics.ListAPIView):

    """
    List all stations.
    """
    ordering = ('-last_update', '-visits',)
    queryset = Station.objects.all()
    serializer_class = StationSerializer
    permission_classes = (permissions.IsAuthenticated,)

这是我设置的一部分。py

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.AllowAny',
    ),
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.CursorPagination',
    'PAGE_SIZE': 12,
}

我需要做什么才能让它起作用?

【问题讨论】:

标签: python django pagination django-rest-framework


【解决方案1】:

尝试将您的字段也列在ordering_fields 下,我认为您仍然需要将它们列入白名单以进行排序:

ordering = ('-last_update', '-visits',)
ordering_fields= ('-last_update', '-visits',)

【讨论】:

    【解决方案2】:

    我认为您应该使用数组而不是元组。 试试:

    ordering = ['-last_update', '-visits']
    

    【讨论】:

      猜你喜欢
      • 2016-12-27
      • 2014-08-28
      • 1970-01-01
      • 2022-10-09
      • 2018-12-24
      • 2018-12-12
      • 2011-10-02
      • 2014-12-31
      • 1970-01-01
      相关资源
      最近更新 更多