8

我有一个我正在处理的美味 api,并且在我的 api 资源的列表视图中,我想在不应用分页的情况下获取整个数据列表,无论列表中的对象数量如何。我不需要具有上限的自定义分页器,我想完全禁用分页。

我可能会修改我的客户端以处理分页(API 是从 C++ DLL 而不是 Web 浏览器访问的,所以它有点复杂但可能)但如果我可以禁用它会更容易。

是否有一个开关可以禁用不同资源的分页器,或者可能有一个 api 范围的开关来禁用注册到该 api 对象的所有资源的分页?

4

2 回答 2

10

为此,您需要设置至少两个不同的东西。

在站点设置文件中,设置

API_LIMIT_PER_PAGE = 0

在要禁用分页的资源元类中,设置:

class MyResource(ModelResource):
    ...
    class Meta:
        ...
        max_limit = None

然后,如果您导航到资源的列表视图,返回的内容应该显示限制为 0。

于 2013-04-10T14:24:28.070 回答
3

另一种解决方案是定义 DummyPaginator 类(最初在此处描述:https ://github.com/toastdriven/django-tastypie/issues/777 ),它应该是tastepie的一部分(但不幸的是......):

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
于 2013-06-03T20:39:00.513 回答