2011-07-18 55 views
1

私は2モデルCarRatingを持っています。人々の車(duhh)。私はCarの平均得点を得る単純なget_average_score()の方法を書いた、私のモデルは以下の通りです。モデルの方法で注文

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() DESCを注文してるところ、「トップカーズ」です。

どうすればよいですか?

答えて

1

いいえ、あなたは注釈を使用してこれを行うことができます。平均だろう

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

、私はあなたがプロパティとして、そのメソッドをレンダリングできると思っていたので、私はORDER_BY行うことができます - 限り、私は、カスタム方法で注文することができなかったと思ったとして、平均申し訳ありませんうん – dotty

+0

(「get_average_scoreを」) 。 – JamesO

+0

これは私が探しているものですが、あなたが言ったようにカスタムメソッドで注文することはできませんhttp://stackoverflow.com/questions/981375/using-a-django-custom-model-method-property-in-order- 〜によって – dotty

関連する問題