станьте средними от набора объектов в django

Шаг скрутки, у меня есть простая система оценки для свойства. Вы даете ему метку из 5 (звезды). Модели определяются как это

def Property(models.Model)
    # stuff here

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

То, что я хочу сделать, получают свойство, находят все объекты Оценки, собирают их, затем получают средние 'звезды' от них.

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

13
задан dotty 22 April 2010 в 09:38
поделиться

1 ответ

Вы должны использовать Агрегацию (doc) :

from django.db.models import Avg

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

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

31
ответ дан 1 December 2019 в 20:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: