在数据库中计算平均分数(Django)

3

我有一个包含大约15个对象的数据库Result.objects.all()。结果有一个名为score的字段,范围从1到5。因此,如果我执行q = Result.objects.get(id=1)q.score的值为2。 有什么方法可以找到所有15个对象的分数平均值?

1个回答

7
您可以使用django的聚合函数(aggregation)来实现此操作;
# Average price across all objects.
>>> from django.db.models import Avg
>>> Result.objects.all().aggregate(Avg('score'))
{'score__avg': 34.35}

+1. 最好的部分是这是在数据库中完成的,而不是在应用程序代码中完成的,因此它更具可扩展性。 :-) - Platinum Azure
让我们把这个提升一个档次:有没有办法忽略所有得分为2的,只计算1、3、4和5的平均值?我可能需要发布一个新问题。 - ono
你可以筛选你的对象。 - dm03514
1
是的,这就做到了:q = Result.objects.exclude(score=2).aggregate(Avg('score'))。 - ono

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接