【问题标题】:get average from set of objects in django从 django 中的一组对象中获取平均值
【发布时间】:2023-03-09 11:08:01
【问题描述】:

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

def Property(models.Model)
    # stuff here

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

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

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

【问题讨论】:

    标签: python django average


    【解决方案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)的平均值?
    猜你喜欢
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 2019-01-14
    • 2021-08-30
    • 1970-01-01
    • 2020-08-30
    相关资源
    最近更新 更多