Django Rest Framework 3.2.3分页不适用于generics.ListCreateAPIView

时间:2016-04-15 00:16:51

标签: django django-rest-framework

文档说我在子类化通用List或ListCreateAPIView时应该免费获得分页,但没有任何分页发生的迹象。

以下是我在设置中的内容......

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS':   
        'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 25,
    'MAX_PAGE_SIZE': 50,
    'TEST_REQUEST_DEFAULT_FORMAT': 'json',
    'TEST_REQUEST_RENDERER_CLASSES': (...
    ),
    'DEFAULT_FILTER_BACKENDS': (...
    )
}

我的观点:

class RequestList(generics.ListCreateAPIView):

    # set context for serializers
    def get_serializer_context(self, *args, **kwargs):
        context = {
            'request': self.request,
            'view': self,
            'format': self.format_kwarg,
            'request_type_id': 1}
    return context 

    request_type_code_model_map = {
        "S": Request.objects.filter(request_type_id=1, status='open'),
        ...}

    def get(self, request, request_type_code="S", format=None, *args,  **kwargs):

        queryset = self.request_type_code_model_map.get(
            request_type_code, "S")
        serializer_class = RequestSerializer
        serializer = serializer_class(
            instance=queryset, context=self.get_serializer_context(),
            many=True)

     return Response(serializer.data)

非常感谢任何帮助。我已经尝试创建自定义paginator类,在设置中设置各种配置选项,但我做的任何事情似乎都没有尝试进行分页。分页适用于使用ViewSet的用户和组,但不适用于使用泛型的任何视图。任何想法,关于我所缺少的线索或解决方案都会非常感激。

1 个答案:

答案 0 :(得分:3)

如果你不覆盖调用它的部分,你可以免费获得分页。 您可以浏览list source以查看其实施方式以及如何编写get方法。