使用django的ORM批註()和/或聚合():我想基於一個類別字段進行總結,然後對每個日期的類別值進行平均。我試圖使用兩個annotate()語句來做到這一點,但得到了一個FieldError。django聚合:總和然後平均值
我這樣做:
queryset1 = self.data.values('date', 'category').annotate(sum_for_field=Sum('category'))
與喜歡的東西(所以對於類別的每個值之和)輸出ValuesQuerySet對象:
[{'category': 'apples', 'date': '2015-10-12', sum_for_field=2000},
{'category': 'carrots', 'date': '2015-10-12', sum_for_field=5000},
{'category': 'apples', 'date': '2015-10-13', sum_for_field=3000},
{'category': 'carrots', 'date': '2015-10-13', sum_for_field=6000}, ...
]
然後我要平均的sum_for_field每個日期輸出類似的東西:
[ {'date': '2015-10-12', avg_final: 3500},
{'date': '2015-10-13', avg_final: 4500}, ...
]
我試過這樣做:
queryset2 = queryset1.values('date', 'sum_for_field')
result = queryset2.annotate(avg_final=Avg('sum_for_field'))
但我得到這個FieldError:
FieldError: FieldError: Cannot compute Avg('sum_for_field'): 'sum_for_field' is an aggregate
您需要將'.annotate()'更改爲'.aggregate()'。有關更多信息,請參閱文檔:https://docs.djangoproject.com/en/1.9/topics/db/aggregation/ – jape
@jape爲什麼不在一個答案中加入這個參考文獻[提供示例](https://docs.djangoproject.com/en/1.9/topics/db/aggregation/#aggregating-annotations)。 – tutuDajuju
這個例子不是我想要的。 – user1387717