Django аннотирует использование экземпляра модели, отличного от элемента запроса - PullRequest
1 голос
/ 24 июня 2011

У меня такой запрос, что

em =Employer.objects.filter(id=1).annotate(overall_value = Sum('companyreview__overallRating'))

em[0].overall_value

Как видите, я хочу суммировать поле overallRating всех companyreview объектов, у которых employer имеет id = 1.

Приведенный выше запрос делает то, что я хочу, но я уверен, что есть способ получить сумму из Employer экземпляра.

Как я могу реализовать этот запрос, например

em =Employer.objects.get(id=1)
rate = em.companyreview_set.all().annotate(overall_value = Sum('overallRating'))
rate.overall_value

?

Спасибо

1 Ответ

2 голосов
/ 24 июня 2011

Использование aggregate:

e.companyreview_set.aggregate(overall_value = Sum('overall_rating'))

Для:

class Employer(models.Model): 
     name = models.CharField(max_length=100)

class CompanyReview(models.Model): 
     employer = models.ForeignKey(Employer)
     overall_rating = models.IntegerField()    
...