我有一个简单的子类viewsets.ViewSet
看起来像:
from rest_framework import viewsets
from rest_framework.response import Response
from ..models import Entry, Sitting, Source, Venue
from .serializers import (
SittingSerializer, SittingWithEntriesSerializer,
)
class SittingViewSet(viewsets.ViewSet):
def list(self, request, version=None):
queryset = Sitting.objects.order_by('id')
serializer = SittingSerializer(
queryset, many=True, context={'request': request}
)
return Response(serializer.data)
def retrieve(self, request, pk=None, version=None):
prefetch_qs = Entry.objects.select_related('speaker')
queryset = Sitting.objects.order_by('id') \
.prefetch_related(Prefetch('entry_set', queryset=prefetch_qs))
sitting = get_object_or_404(queryset, pk=pk)
serializer = SittingWithEntriesSerializer(
sitting, context={'request': request}
)
return Response(serializer.data)
但是,列表视图不会分页,就像您使用 的子类一样ModelViewSet
。我正在使用的设置是:
# Django Rest Framework settings:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': ('pombola.api.permissions.ReadOnly',),
'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.URLPathVersioning',
'PAGE_SIZE': 10,
}
The 文档 http://www.django-rest-framework.org/api-guide/pagination/建议查看源代码mixins.ListModelMixin https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/mixins.py and 泛型.GenericAPIView https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/generics.py类,但我无法轻松了解如何重新应用它们对这些 ViewSet 方法的结果进行分页的操作。
任何人都可以建议最简单的方法是更改此示例以获取分页list
view?