关闭Django Rest Framework ModelViewSet

时间:2016-04-11 15:40:08

标签: django pagination django-rest-framework

我正在使用Django Rest Framework的ModelViewSet作为我的一个观点。 ModelViewSet使用ListModelMixin自动对结果进行分页,但我不想将结果分页。在我的API调用中,我说我想要返回多少结果,但就目前而言,我无法在一次通话中获得超过10个结果。

有没有办法关闭自动分页,所以我可以获得尽可能多的结果?

4 个答案:

答案 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
}