[英]how to use annotate to sum up all rows and get the avg? django
我正在谷歌上搜索,並且有一種使用Cast
的簡單方法,但是我相信那是針對django 2.0
,我的是django 1.9
我找到了一個帖子,並嘗試了它,但是它實際上對我不起作用。
假設我有一個包含value
和max
字段的模型。 我想獲得所有value
和max
的總和,然后將它們除以得出平均值。 我所做的只是獲得一行並返回該行的平均值,有人可以讓我知道我在這里做錯了什么嗎?
model_calcuation = Model.objects.filter().annotate(
sum_score=Sum('value', output_field=FloatField()),
sum_max=Sum('max', output_field=FloatField())
).annotate(
avg=F('sum_score') / F('sum_max')
)
預先感謝您的任何幫助
如果我正確理解了您的問題,那么您正在尋找aggregate()
操作。
from django.db.models import F, Sum
model_calcuation = Model.objects.aggregate(result=Sum(F('value')) / Sum(F('max')))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.