2010-05-17 4 views
0

장고 1.1.1장고 집계 - 쿼리를 사용하여 쓰레기통에 의해 그룹

Models.py :

class Datapoint(models.Model): 
    parameter1 = models.FloatField() 
    parameter2 = models.FloatField() 

나는 빈에 (반올림 또는 기타) 가장 가까운 정수로 매개 변수 1의 값을 원하고 이 빈에 대한 두 매개 변수의 평균을 리턴하십시오.

select round(parameter1,0), 
    avg(parameter1), 
    avg(parameter2) 
from Datapoints 
group by round(parameter1,0) 
order by round(parameter1,0) 

내가 장고보기에서의 검색어에서 동일한 사용하여 집계를 달성 할 수있다, 또는 직접 필드에 의한 것입니다 만 그룹 : SQL에서

나는 다음 할 것?

또는 모델의 메타 필드로 반올림 값을 설정하고 뷰에서이 값을 참조 할 수 있습니까?

답변

2

이 작동합니다 :

from django.db.models import Avg 
Datapoint.objects.extra(
    select={'rounded_param1': 'ROUND(parameter1)'} 
).values('rounded_param1').annotate(Avg(parameter1)).annotate(Avg(parameter2)) 

그 쿼리에서 생성 된 SQL에보기는 둥근 값에 참으로 GROUP BY를한다는 것을 보여줍니다.

+0

완벽하게 작동합니다. 감사합니다. - 나는 공식 .extra() 문서에 약간 혼란스러워했다. – meepmeep

관련 문제