从 django 中的一组对象中获取平均值

Posted

技术标签:

【中文标题】从 django 中的一组对象中获取平均值【英文标题】:get average from set of objects in django 【发布时间】:2011-02-10 23:48:14 【问题描述】:

嘿,我有一个简单的房产评级系统。您给它打分(满分 5 星)。模型是这样定义的

def Property(models.Model)
    # stuff here

def Rating(models.Model)
    property = models.ForeignKey(Property)
    stars = models.IntegerField()

我想要做的是获得一个属性,找到所有的 Rating 对象,收集它们,然后从中获取平均“星”。

任何想法如何做到这一点?

【问题讨论】:

【参考方案1】:

你应该使用Aggregation(doc):

from django.db.models import Avg

p = Property.objects.get(...)
stars_average = p.rating_set.aggregate(Avg('stars')).values()[0]

虽然我的例子有点不确定。

【讨论】:

示例在 :) 非常感谢 drmegahertz。 对于单个查询中的多个属性,您可以使用Property.objects.annotate(Avg('rating__stars')) 如何计算ratings = ArrayField(models.IntegerField(), blank=True,null=True)的平均值?

以上是关于从 django 中的一组对象中获取平均值的主要内容,如果未能解决你的问题,请参考以下文章

Zapier 编写的代码循环遍历一组对象,每个对象提取一个值,然后平均这些值

求一组对象的平均值

统计学中的均值指的是啥

平均数和中位数的区别

如何从 Postgresql 中的计算列中获取平均值?

编写一个 R 脚本来计算数据框中的平均值