2011-07-18 73 views
1

我有2個型號CarRating。人們評價汽車(duhh)。我寫了一個簡單的get_average_score()方法,得到的平均分數爲Car,下面是我的模型。通過模型中的方法訂購

class Car(models.Model): 
    def get_average_score(self): 
    return self.rating_set.aggregate(Avg('score')) 

class Rating(models.Model): 
    car = models.ForeignKey(Car) 
    score = models.IntegerField(blank=False, null=False) 

基本上我想要的是「頂級車」,在這裏我命令get_average_score()遞減。

我該怎麼做?

回答

1

不,但您可以使用註釋等方式進行此操作。

Car.objects.annotate(score=Avg('rating__score').order_by('-score') 
+0

這將是平均的,我以爲你可以渲染方法,屬性,所以我可以做ORDER_BY(「 - get_average_score」) – dotty

+0

沒錯對不起AVG,據我以爲你不能用自定義的方法排序。 – JamesO

+0

這就是我正在尋找,但正如你所說,你不能通過自定義方法排序http://stackoverflow.com/questions/981375/using-a-django-custom-model-method-property-in-order-通過 – dotty