关闭Django Rest Framework ModelViewSet的自动分页

Bil*_*ble 16 django pagination django-rest-framework

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

有没有办法关闭自动分页,所以我可以得到尽可能多的结果我想要返回?

tri*_*het 49

如果您使用的是最新版本的DRF,则只需添加 pagination_class = None到您的ModelViewSet定义中即可.

class MyClassBasedView(ModelViewSet):
    pagination_class = None
    ...
Run Code Online (Sandbox Code Playgroud)

你也可以在这里看到一些提示https://github.com/tomchristie/django-rest-framework/issues/1390

  • 但这删除了`results`属性 (3认同)

Gau*_*mar 7

ModelViewSet 或 mixins.ListModelMixin 自动为我们创建分页。您可以通过paginator = None停止它

class NotesViewSet(viewsets.ModelViewSet):    
     queryset = Notes.objects.all()
     serializer_class = NotesWriteSerializer
     paginator = None
Run Code Online (Sandbox Code Playgroud)


Hoj*_*esi 5

如果您希望仅针对一项操作禁用分页器:

@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
Run Code Online (Sandbox Code Playgroud)

在你的ModelViewSet.