Untuk menggemakan / memperluas komentar Jeff, apa yang saya pikir harus Anda tuju hanyalah sebuah properti di kelas Pilihan Anda yang menghitung jumlah suara yang terkait dengan objek itu:
class Choice(models.Model):
text = models.CharField(max_length=200)
def calculateVotes(self):
return Vote.objects.filter(choice=self).count()
votes = property(calculateVotes)
Dan kemudian di templat Anda, Anda dapat melakukan:
{% for choice in choices %}
{{choice.choice}} - {{choice.votes}} <br />
{% endfor %}
Tag templat, IMHO sedikit berlebihan untuk solusi ini, tetapi juga bukan solusi yang buruk. Tujuan dari template di Django adalah untuk melindungi Anda dari kode di template Anda dan sebaliknya.
Saya akan mencoba metode di atas dan melihat apa yang dihasilkan ORM SQL karena saya tidak yakin di atas kepala saya apakah itu akan melakukan pre-cache properti dan hanya membuat subselect untuk properti atau jika itu akan berulang / on- permintaan menjalankan kueri untuk menghitung jumlah suara. Tetapi jika itu menghasilkan pertanyaan mengerikan, Anda selalu dapat mengisi properti di tampilan Anda dengan data yang telah Anda kumpulkan sendiri.