我想打印出每个选项得到的票数.我在模板中有以下代码:
{% for choice in choices %}
{{choice.choice}} - {{votes[choice.id]}} <br />
{% endfor %}
votes
只是一个字典,而choices
是一个模型对象.
它会引发以下消息的异常:
"Could not parse the remainder"
我想打印出每个选项得到的票数.我在模板中有以下代码:
{% for choice in choices %}
{{choice.choice}} - {{votes[choice.id]}} <br />
{% endfor %}
votes
只是一个字典,而choices
是一个模型对象.
它会引发以下消息的异常:
"Could not parse the remainder"
为了回应/扩展Jeff的 comments ,我认为你应该瞄准Choice类中的一个属性,该属性计算与该对象关联的投票数:
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中模板的目标是将您与模板中的代码隔离,反之亦然.
我会try 上面的方法,看看ORM生成什么SQL,因为我不确定ORM是否会预先缓存属性并只为属性创建子 Select ,或者是否会迭代/按需运行查询来计算投票数.但是,如果它生成可怕的查询,您总是可以用您自己收集的数据填充视图中的属性.