2012-03-30 3 views
3

안녕하세요, 클라이언트 쪽 (High Charts)의 그래프 용 데이터를 출력하는 Django보기를 작성하고 있습니다. 데이터는 주어진 매개 변수가 하루에 한 번 기록 된 기후 데이터입니다.Django queryset 집계 시간 간격으로

내 질문은 이것이다 : 이제

format = '%Y-%m-%d' 
sd = datetime.datetime.strptime(startdate, format) 
ed = datetime.datetime.strptime(enddate, format) 

data = Climate.objects.filter(recorded_on__range = (sd, ed)).order_by('recorded_on') 

, 범위는 데이터 세트 분명히 커질수록 증가하고,이 (상당히 일을 늦추고 제외) 그래프에 잘 제시하지 않는 한.

내 데이터를 기간별로 그룹화하는 방법이 있습니까? 특히 각 달의 평균 또는 각 연도 평균을 그룹화하는 방법이 있습니까? django aggregation to lower resolution using grouping by a date range

을하지만 장고 자체 편리한 방법이 있는지 알고 싶습니다 : 여기에 언급 한 바와 같이

나는이 SQL에서 수행 할 수 실현.

아니면 db를 직접 수정하고 스크립트를 사용하여 타임 스탬프의 월 및 연도 필드를 채우는 것이 더 좋을까요?

도움을 주시면 감사하겠습니다.

답변

3

django-qsstats-magic (https://github.com/kmike/django-qsstats-magic)을 사용해 보셨습니까?

그것은 여기, 차트에 대한 일을 아주 쉽게 자신의 문서에서 시계열 예입니다

from django.contrib.auth.models import User 
import datetime, qsstats 

qs = User.objects.all() 
qss = qsstats.QuerySetStats(qs, 'date_joined') 

today = datetime.date.today() 
seven_days_ago = today - datetime.timedelta(days=7) 

time_series = qss.time_series(seven_days_ago, today) 
print 'New users in the last 7 days: %s' % [t[1] for t in time_series] 
+0

흠. 유망 해 보이는군요. –

+0

일반 Django에서도이 유형의 쿼리가 가능합니까? –

+0

예, User.objects.filter(). aggregate();를 사용하여 비슷한 결과를 얻을 수 있습니다. 여기 공식 문서를 참조하십시오 : https://docs.djangoproject.com/en/dev/topics/db/aggregation/ – BluesRockAddict