我的 Django 模板中有以下代码:
{% for matrix_row in request.session.matrix_rows %}
{% for radio in form.matrix_row_one_column_value %}
<li>{{ radio }}</li>
{% endfor %}
{% endfor %}
如何在迭代外部 for 循环时更改内部 for 循环的列表?例如,外部 for 循环的连续传递列表应如下所示:
form.matrix_row_one_column_value
form.matrix_row_two_column_value
form.matrix_row_three_column_value
form.matrix_row_four_column_value
form.matrix_row_five_column_value
form.matrix_row_six_column_value
任何帮助将不胜感激。谢谢。
你为什么不在视图中做工作,而不是尝试在模板中提出一些复杂的东西?
例如,在你的 Python 中:
names = ['apple', 'orange', 'carrot']
colors = [ ['red', 'green'], ['orange', 'red'], ['orange', 'yellow'] ]
fruits = zip(names, colors)
然后在您的模板中:
{% for name, colors in fruits %}
<div>
{{ name }} -
{% for color in colors %}
{{ color }}
{% endfor %}
</div>
{% endfor %}
如果我理解正确的话,你想做的是form[matrix_row]
{% for matrix_row in request.session.matrix_rows %}
{% for radio in form[matrix_row] %}
<li>{{ radio }}</li>
...
这在 Django 模板中是不可能的,所以你需要为此添加自己的简单templatetag
。像这样的东西
@register.filter
def keyvalue(dic, key):
"""Use a variable as a dictionary key"""
return dic[key]
现在你可以做到
{% for matrix_row in request.session.matrix_rows %}
{% for radio in form|keyvalue:matrix_row %}
<li>{{ radio }}</li>
...