【问题标题】:Tastypie how to stop meta queryTastypie 如何停止元查询
【发布时间】:2016-12-01 04:41:13
【问题描述】:

当我创建一个美味的 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=()

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

【问题讨论】:

    标签: django tastypie


    【解决方案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 包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 2016-05-21
      • 2017-10-12
      • 2019-03-02
      • 2012-12-30
      • 2014-12-10
      • 2014-03-21
      相关资源
      最近更新 更多