Получить среднее значение из набора объектов в django

Хей, у меня простая система оценки для свойства. Вы даете ему отметку из 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]

Хотя немного неуверен в моем примере.