Para ecoar / estender o comentário de Jeff, o que acho que você deve procurar é simplesmente uma propriedade em sua classe Choice que calcule o número de votos associados a esse objeto:
class Choice(models.Model):
text = models.CharField(max_length=200)
def calculateVotes(self):
return Vote.objects.filter(choice=self).count()
votes = property(calculateVotes)
E então no seu modelo, você pode fazer:
{% for choice in choices %}
{{choice.choice}} - {{choice.votes}} <br />
{% endfor %}
A marca de modelo, IMHO é um pouco exagerada para esta solução, mas também não é uma solução terrível. O objetivo dos modelos no Django é isolá-lo do código em seus modelos e vice-versa.
Eu tentaria o método acima e veria o SQL que o ORM gera, pois não tenho certeza se ele pré-armazenará em cache as propriedades e apenas criará uma subseleção para a propriedade ou se iterativamente / on- demanda execute a consulta para calcular a contagem de votos. Mas, se gerar consultas atrozes, você sempre poderá preencher a propriedade em sua exibição com os dados que você mesmo coletou.