2016-04-27 8 views
1

Ich baue eine API mit Django-Rest-Framework und setze die Cursor-Paginierung - standardmäßig nach 'erstellt' Filter, was wirklich gut für einige Ansichten.Ordering cursor pagination mit Django-Rest

Aber ich habe diese, die ich durch andere Felder bestellen möchte (last_update und Besuche). Ich stelle das Bestellfeld in meine Sicht, funktioniert aber nicht.

class StationList(generics.ListAPIView): 

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

, dass ein Teil meiner 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, 
} 

ist Was muss ich tun, damit es funktioniert?

+0

Beachten Sie jedoch, dass es einige Einschränkungen auf dem Bestellfeld sind Sie kann für 'CursorPagination' verwenden: http://www.django-rest-framework.org/api-guide/pagination/#details-and-limitations –

Antwort

0

Ich denke, Sie sollten ein Array statt ein Tupel verwenden. Versuch:

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

Versuchen als auch Ihre Felder unter ordering_fields Auflistung, ich glaube, Sie immer noch sie zum Sortieren weiße Liste benötigen:

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