使用 django 的 ORMannotate()
and/or aggregate()
:我想根据一个类别字段进行汇总,然后对每个日期的类别值进行平均。我尝试用两个来做annotate()
声明但得到了FieldError
.
我正在这样做:
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