2016-07-27 3 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

때이 작동

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 클래스를 확인 limit = 0offset = 0. 다른 경우 Tastypie는 다음 및 이전 링크를 만들기 위해 모든 요소를 ​​계산해야하며 meta.total_count이어야합니다.

이 코드는 tastypie-extras 패키지에서 제공됩니다.