2011-07-18 71 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