DRF Pagination page_size не работает с ModelViewSet

Я пытаюсь использовать ModelViewSet и PageNumberPagination вместе, но не могу заставить работать параметр page_size. Я установил размер в 200, но в списке всегда 200+ элементов.

Вот мой фрагмент кода:

class ExamplePagination(pagination.PageNumberPagination):
       page_size = 200
       max_page_size = 200

class VideosViewSet(viewsets.ModelViewSet):
    parser_classes = (FormParser, JSONParser)
    serializer_class = VideoSerializer
    pagination_class = ExamplePagination
    queryset = Video.objects.all()
    
    @swagger_auto_schema(responses={200: VideoSerializer})
    def list(self, request):
        """
        Request to list all videos
        """
        queryset = Video.objects.all().order_by("-published_at")
        if queryset.exists():
            page = self.paginate_queryset(queryset)
            if page is not None:
                serialized = VideoSerializer(queryset, many=True)
                return self.get_paginated_response(serialized.data)
        return Response(status=http_status.HTTP_404_NOT_FOUND)

Я перепробовал все, начиная с пользовательских миксинов и заканчивая установкой размера страницы в settings.py Вот мой settings.py

REST_FRAMEWORK = {
    "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination",
    'PAGE_SIZE': 200,
}

Вы должны передать в сериализатор page вместо queryset:

    if queryset.exists():
        page = self.paginate_queryset(queryset)
        if page is not None:
            serialized = VideoSerializer(page, many=True)
            return self.get_paginated_response(serialized.data)
    return Response(status=http_status.HTTP_404_NOT_FOUND)

queryset содержит все объекты, в то время как page уже содержит только необходимое количество объектов.

Вернуться на верх