Django Rest Framework在ViewSet中覆盖page_size - python

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分页的。知道我错了吗?

参考方案

我通过创建自定义分页类来解决此问题。并在课堂上设置所需的页面大小。我在我的视图集中将此类用作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 

在ViewSet中。

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

Django REST Framework中序列化程序验证的顺序 - python

情况在Django REST Framework的ModelSerializer中进行验证时,我注意到Meta.model字段始终经过验证,即使这样做不一定有意义。采取以下示例进行User模型的序列化:我有一个创建用户的端点。因此,存在一个password字段和一个confirm_password字段。如果两个字段不匹配,则无法创建用户。同样,如果请求的us…

Django BigInteger自动递增字段作为主键? - python

我目前正在建立一个涉及大量集体智慧的项目。每个访问该网站的用户都将创建一个唯一的配置文件,然后将他们的数据用于为自己和其他用户计算最佳匹配。默认情况下,Django创建一个INT(11)id字段来处理模型的主键。我担心这会很快溢出(即,大约2.4b个设备在未事先设置Cookie的情况下访问了该页面)。如何在MySQL中将其更改为BIGINT并在Django自…

Django Python日期时间设置为午夜 - python

我有django对象的日期时间,但可以是一天中的任何时间。它可以是一天中的任何时间,但我需要将时间设置为00:00:00(另一个日期设置为23:59:59,但原理是相同的)end_date = lastItem.pub_date 当前的结束日期是2002-01-11 12:34:56我需要怎么做才能将其更改为00:00:00?我试过了:end_date.ho…

Django:使用contenttypes框架的一般关系示例? - python

我已经多次浏览了有关contenttypes框架的Django文档,但我对它的理解不足以在项目中实现泛型关系。我一直在寻找有关此事的在线示例或教程,但找不到一个。称我为哑巴,但在这方面我需要一些帮助(请不要仅通过链接到文档来回答问题)。基于在线资源的缺乏,我相信如果您用一个完整的例子来回答这个问题,您的答案可能是迄今为止有关django通用关系(奖金!)的最…

Django:我应该如何存储货币价值? - python

我在这里遇到范式问题。我不知道该将钱存储为Decimal(),还是将其存储为字符串并将自己转换为十进制。我的推理是这样的: PayPal要求小数点后两位为,因此,如果我有49美元的产品,PayPal希望看到49.00。 Django的DecimalField()并未设置小数位数。它仅存储最大小数位数。因此,如果其中有49个字段,并且将字段设置为2个小数位,它…