Para hacer eco / ampliar el comentario de Jeff, lo que creo que debería apuntar es simplemente una propiedad en su clase Choice que calcula el número de votos asociados con ese objeto:
class Choice(models.Model):
text = models.CharField(max_length=200)
def calculateVotes(self):
return Vote.objects.filter(choice=self).count()
votes = property(calculateVotes)
Y luego en su plantilla, puede hacer:
{% for choice in choices %}
{{choice.choice}} - {{choice.votes}} <br />
{% endfor %}
La etiqueta de la plantilla, en mi humilde opinión, es un poco exagerada para esta solución, pero tampoco es una solución terrible. El objetivo de las plantillas en Django es aislarlo del código en sus plantillas y viceversa.
Probaría el método anterior y vería qué SQL genera el ORM, ya que no estoy seguro de la parte superior de mi cabeza si pre-almacenará en caché las propiedades y solo creará una subselección para la propiedad o si iterativamente / en- demanda ejecutar la consulta para calcular el recuento de votos. Pero si genera consultas atroces, siempre puede llenar la propiedad en su vista con los datos que ha recopilado usted mismo.