使用Django在单个表中聚合数据
使用Django,我想通过从一个每天有多个条目的表聚合来生成一个包含一些每日统计信息的queryset。这是桌子使用Django在单个表中聚合数据,django,django-queryset,Django,Django Queryset,使用Django,我想通过从一个每天有多个条目的表聚合来生成一个包含一些每日统计信息的queryset。这是桌子 CREATE TABLE weather ( id serial NOT NULL, air_temp double precision NOT NULL, obs_date date, .... ) 这是我想在queryset中得到的结果的SQL等价物 select obs_date, avg(air_temp) from weather group by obs
CREATE TABLE weather
(
id serial NOT NULL,
air_temp double precision NOT NULL,
obs_date date,
....
)
这是我想在queryset中得到的结果的SQL等价物
select obs_date, avg(air_temp) from weather group by obs_date order by obs_date
Django模型如下所示
class WeatherData(models.Model):
obs_date = models.DateField('Obs Date', blank=False, null=False, db_index=True)
air_temp = models.FloatField('Air Temp', blank=False, null=False)
...
我读过这个,但不知道怎么做。欢迎提出建议
更新:这项工作:
WeatherData.objects.values('obs_date').annotate( max_air=Max('air_temp'), min_air=Min('air_temp'))
这不管用,但它让我走上了正确的道路。出现错误的地方是表中的所有字段都在Django生成的GROUP BY中结束。如果在注释之前插入.values(),则会得到正确的结果
somedata = WeatherData.objects.annotate(Avg('air_temp')).order_by('obs_date')
for datum in somedata:
print '%s: %s' % (datum.obs_date, datum.air_temp__avg)