получить среднее из множества объектов в Джанго - PullRequest
12 голосов
/ 22 апреля 2010

Хей, у меня есть простая система оценки имущества. Вы ставите ему оценку из 5 (звездочек). Модели определены так:

def Property(models.Model)
    # stuff here

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

Что я хочу сделать, так это получить собственность, найти все объекты рейтинга, собрать их, а затем получить от них средние «звезды».

есть идеи, как это сделать?

1 Ответ

30 голосов
/ 22 апреля 2010

Вы должны использовать Aggregation (doc) :

from django.db.models import Avg

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

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

...