2016-07-27 5 views
0

tastypie APIを作成してGETを実行すると、テーブルのエントリ数をカウントするメタクエリが実行されます。Tastypieメタクエリを停止する方法

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

はときlimit = 0offset = 0この作品

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() 

を使用して独自のPaginatorクラスを作成します。他の場合には、Tastypieは次のおよび前のリンクを作るためにすべての要素を数えなければならず、meta.total_countです。

このコードはtastypie-extrasパッケージからのものです。

関連する問題