Django 休息框架覆盖 ViewSet 中的 page_size

新手上路,请多包涵

我在使用 django rest 框架分页时遇到问题。我在设置中设置了分页 -

 'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 1

以下是我的观点。

 class HobbyCategoryViewSet(viewsets.ModelViewSet):
    serializer_class = HobbyCategorySerializer
    queryset = UserHobbyCategory.objects.all()

我想为此视图集设置不同的页面大小。我尝试设置 page_size 和 Paginate_by 类变量,但列表根据设置中定义的 PAGE_SIZE 进行分页。知道我哪里错了吗?

原文由 Mangesh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 374
2 个回答

我通过创建自定义分页类来解决这个问题。并在课堂上设置所需的页面大小。我在我的视图集中将此类用作 pagination_class。

 from rest_framework import pagination

class ExamplePagination(pagination.PageNumberPagination):
       page_size = 2

class HobbyCategoryViewSet(viewsets.ModelViewSet):
    serializer_class = HobbyCategorySerializer
    queryset = UserHobbyCategory.objects.all()
    pagination_class=ExamplePagination

我不确定是否有更简单的方法。这个对我有用。但是我认为仅仅为了改变page_size而创建新类是不好的。

编辑 - 简单的解决方案设置为

pagination.PageNumberPagination.page_size = 100

在视图集中。

 class HobbyCategoryViewSet(viewsets.ModelViewSet):
    serializer_class = HobbyCategorySerializer
    queryset = UserHobbyCategory.objects.all()
    pagination.PageNumberPagination.page_size = 100

原文由 Mangesh 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用页面大小查询参数动态提供页面大小..

 from rest_framework.pagination import PageNumberPagination

class StandardResultsSetPagination(PageNumberPagination):
    page_size_query_param = 'limit'

在设置中设置默认分页类

REST_FRAMEWORK = {'DEFAULT_PAGINATION_CLASS': 'StandardResultsSetPagination',}

现在在您的 URL 中提供限制作为 GET 参数。

http://example.com/list/?limit=100 或 25

原文由 Naresh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题