我有一个正在研究的tastypie api,在我的api资源的列表视图中,无论列表中的对象数量多少,我都希望获得不应用分页的整个数据列表。我不需要具有上限的自定义分页器,我想完全禁用分页。
我可能会修改我的客户端以处理分页(api是从C ++ DLL而不是Web浏览器访问的,因此它有点复杂但可能)但如果我可以禁用它会更容易。< / p>
是否有一个开关来禁用不同资源的paginator,或者可能是一个api wide开关来禁用注册到该api对象的所有资源的分页?
答案 0 :(得分:10)
要做到这一点,你需要设置至少两个不同的东西。
在网站设置文件中,设置
API_LIMIT_PER_PAGE = 0
在要禁用分页的资源Meta类中,设置:
class MyResource(ModelResource):
...
class Meta:
...
max_limit = None
然后,如果您导航到资源的列表视图,则返回的内容应显示限制为0。
答案 1 :(得分:3)
替代解决方案是定义DummyPaginator类(最初在这里描述:https://github.com/toastdriven/django-tastypie/issues/777),它应该是tastypie的一部分(但不幸的是......):
class DummyPaginator(object):
def __init__(self, request_data, objects, resource_uri=None,
limit=None, offset=0, max_limit=1000,
collection_name='objects'):
self.objects = objects
self.collection_name = collection_name
def page(self):
return { self.collection_name: self.objects, }
然后,在您的资源Meta中,设置:
paginator_class = DummyPaginator