我的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
任何帮助将不胜感激。感谢。
答案 0 :(得分:0)
为什么不在视图中完成工作而不是试图在模板中提出复杂的内容?
例如,在你的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 %}
答案 1 :(得分:0)
如果我理解正确,您想要做的就像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>
...