使用Django-Rest订购游标分页

时间:2016-04-27 01:04:00

标签: python django pagination django-rest-framework

我正在使用Django-Rest-Framework构建API并设置游标分页 - 默认情况下按'created'过滤器排序,对某些视图来说真的很好。

但我有这个我想要其他领域(last_update和访问)的订单。我把订购字段放在我的视图中,但不起作用。

class StationList(generics.ListAPIView):

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

这是我的setting.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,
}

我需要做些什么呢?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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