我正在使用Django Rest Framework的ModelViewSet
作为我的一个观点。 ModelViewSet
使用ListModelMixin
自动对结果进行分页,但我不想将结果分页。在我的API调用中,我说我想要返回多少结果,但就目前而言,我无法在一次通话中获得超过10个结果。
有没有办法关闭自动分页,所以我可以获得尽可能多的结果?
答案 0 :(得分:39)
如果您使用的是最新版本的DRF,则只需在pagination_class = None
定义中添加ModelViewSet
即可。
class MyClassBasedView(ModelViewSet):
pagination_class = None
...
您还可以在此处查看一些提示https://github.com/tomchristie/django-rest-framework/issues/1390
答案 1 :(得分:2)
ModelViewSet或mixins.ListModelMixin自动为我们创建分页。你可以阻止它 paginator =无
> class NotesViewSet(viewsets.ModelViewSet):
> queryset = Notes.objects.all()
> serializer_class = NotesWriteSerializer
> paginator = None
答案 2 :(得分:0)
如果您只希望一项操作禁用分页器:
@property
def paginator(self):
self._paginator = super(NotesViewSet, self).paginator
if self.action == 'the_action_you_want_pagination_disabled':
self._paginator = None
return self._paginator
在您的ModelViewSet
中使用它。
答案 3 :(得分:0)
在settings.py中用于全球
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': None,
'PAGE_SIZE': 99999999, # a very large number
}