DRF 分页 page_size 不适用于 ModelViewSet

DRF Pagination page_size not working with 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 已仅包含所需的对象数。