2011-06-24 59 views
1

其他的模型實例我有一個查詢,使得Django的註釋使用了比查詢項目

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

em[0].overall_value 

正如你看到的我想總結所有companyreview對象,它們的employer具有id = 1overallRating領域。

上面的查詢做了我想要的,但我確信有一種方法可以從Employer實例中獲得總和。

我怎樣才能實現這個查詢像

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

感謝

+0

請粘貼您的簡化模型得到一個很好的答案。您使用的是一對多還是多對多? – Udi

+0

正如你已經猜到它是一對多的。感謝您的詳細解答! – brsbilgic

回答

2

使用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()