2013-10-23 2 views
0

가장 좋은 경우 일부 속성 값이 1, 2, 3 및> 3 인 행 수를 계산해야합니다. 예 :django에서 하나의 루프에서 쿼리를 향상시키는 방법이 있습니까?

for i in xrange(1,4): 
    count = some_queryset\ 
     .filter(related__value__exact=i)\ 
     .annotate(count=Count('mtopening'))\ 
     .values_list('count',flat=True) 

선택 .extra raw_sql 또는 단순와없이 객체 지향 방식으로 개선 할 수있는 방법이 있나요? 장고의 계산 방법을 사용하여

+0

UPD. 이 경우에는 3 가지 다른 카운트가 필요합니다 (1,2,3). 그래서 "_in"은 적합하지 않습니다. –

답변

0

count = some_queryset \ 
    .filter(Q(related__value__gte=1) & Q(related__value__lt=4)).count() # This should work also without using Q() 

편집

내가 장고에서이 작업을 수행 할 수있는 직접적인 방법이라고 생각하지 않습니다,하지만 난 아래의 코드는 일을 할 것입니다 생각 :

sums = [] 

for i in range(1,4): 

    sums.append(
     QUERYSET.filter(related__value = i).count() 
    ) 

print sums # will show you a list of sums of the values you want     
+0

나는 그것에 대해 알고 있지만 가치 = 1, count2 값 = 2와 함께 개체의 개수가 필요하고 가치 3으로 계산, 하나의 계산에 함께하지 않습니다. –

+0

@ ДмитрийКорнеев, 내 대답에 친절하게 '편집'을 찾으십시오. – securecurve

관련 문제