在我的Django中,我有一个这样的模型:
class myModel(models.model):
a = models.TextField()
在我的views.py文件中,我有以下内容:
myDict = {
"A": myModel(a="X"),
"B": myModel(a="Y"),
"C": myModel(a="Z"),
}
我创建了以下模板标记:
@register.filter
def get_item(dictionary, key):
return dictionary[key]
在我的模板中,我使用myKey遍历键。我有以下几点。有用:
{% for myKey in myDict %}
{{myDict|get_item:myKey}}
{% endfor %}
我可以说它有效,因为它在网页上打印了myDict [myKeys]。
但是,当我要访问myDict [“ myKey”]的属性a时,它将失败:
{% for myKey in myDict %}
{{myDict|get_item:myKey.a}}
{% endfor %}
它给了我以下错误:
Failed lookup for key [a] in u'A'
问题是,当我说myDict | get_item:myKey.a时,我的意思是(myDict | get_item:myKey).a,但它认为我的意思是myDict | get_item:(myKey.a)
我怎么知道:运算符的优先级更高。不使用括号(哪些Django模板不允许)?
最佳答案
您不需要自定义过滤器。只需使用dict.values
(如果使用Python 2.x,则使用dict.itervalues
):
{% for myModel in myDict.values %}
{{ myModel.a }}
{% endfor %}
关于python - 如何在Django模板中确定操作的优先级?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20930811/