如何在django模板中访问字典元素?

问题:

我有这个代码在模板中,我想打印出每个选择的票数。投票只是字典,而选择是模型对象。

{% for choice in choices %}
    {{choice.choice}} - {{votes[choice.id]}} <br />
{% endfor %}

它引发了一个例外,该消息“无法解析余数”

回答:

回应/扩展Jeff的评论,我认为你应该瞄准的只是你的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 %}

该模板标签是IMHO对此解决方案有点过分,但它也不是一个可怕的解决方案。 Django中的模板的目标是将您与模板中的代码隔离开,反之亦然。
我会尝试上面的方法,看看ORM生成的SQL是什么,因为我不确定我的头顶部,如果它会预先缓存的属性,只是为属性创建一个子选择,或者它将迭代/需求运行查询计算投票数。但是,如果它产生严重的查询,您可以随时使用自己收集的数据填充视图中的属性。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: how to access dictionary element in django template?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

91 − = 82