は、単にそのオブジェクトに関連付けられた票の数を計算し、あなたの選択のクラスのプロパティです:あなたのテンプレートで
class Choice(models.Model):
text = models.CharField(max_length=200)
def calculateVotes(self):
return Vote.objects.filter(choice = self).count()
votes = property(calculateVotes)
そして、
{% for choice in choices %}
{{choice.choice}} - {{choice.votes}} <br />
{% endfor %}
テンプレートタグは、私見このソリューションのビットやり過ぎですが、それはどちらかひどいの解決策ではありません:、あなたが行うことができます。 Djangoのテンプレートの目的は、テンプレート内のコードからあなたを隔離することです。逆もまた同様です。
私は上記の方法を試して、ORMが生成するSQLを見てみましょう。プロパティをプリキャッシュし、そのプロパティのサブセレクトを作成すると、私の頭の上からわかりません。反復的に/オンデマンドで投票数を計算するためにクエリを実行します。しかし、厄介なクエリが生成された場合は、自分で収集したデータを表示することができます。
おかげで検討し、あなたのソリューションは、私のために働きました。私はdjangoとpythonの初心者であり、ORMが生成したSQLを取得する方法を理解することはできません。 – Mohamed
あなたはそのビットの答えをここで見つけることができます: http://docs.djangoproject.com/en/dev/faq/models/#how-can-i-see-the-raw-sql-queries-django -is-running これは非常にシンプルで、実際にはあなたのテンプレートに表示することも、ロギング機能を使ってログに記録することもできますが、DEBUGを有効にすることを忘れないでください。 –
このソリューションは、私がdjangoテンプレート+ Googleのアプリケーションエンジンモデルを持っていた問題に最適です。私はあなたに二度投票してもらいたい。 –