Tastypie如何停止元查询

时间:2016-07-27 09:01:47

标签: django tastypie

当我创建一个tastypie API并对其运行GET时,它会执行一个元查询来计算表中的条目数。

DEBUG [django.db.backends:89] (0.001) SELECT COUNT(*) AS "__count" FROM "lookup_job_types"; args=()

DEBUG [django.db.backends:89] (0.000) SELECT "lookup_job_types"."id", "lookup_job_types"."job_type", "lookup_job_types"."category" FROM "lookup_job_types" LIMIT 1000; args=()

对大型表的第一次查询有多昂贵,如何禁用它。

1 个答案:

答案 0 :(得分:1)

使用

创建自己的Paginator课程
class MyPaginator(Paginator):
    def page(self):
        ...
        count = self.get_count(limit=limit, offset=offset)
        ...

    def get_count(self, limit=None, offset=None):
        if limit in (0, self.max_limit) and offset == 0:
            return len(list(self.objects))
        else:
            return super(MyPaginator, self).get_count()

这适用于limit = 0offset = 0。在其他情况下,Tastypie必须计算下一个和上一个链接的所有元素和meta.total_count

此代码来自tastypie-extras包。