Django 模板标签 {{ form.my_field_xxx }}
我在一个Django表单上,在初始化函数中添加了X个字段。
def __init__(self, *args, **kwargs):
quantity = kwargs.get('quantity')
for i in range(quantity):
self.fields['first_field_%s' % i] = forms.CharField(label='HI Number', widget=forms.TextInput(attrs={'readonly': 'readonly'}))
在我的HTML模板中,我也想在这里进行循环。
{% for x in form.quantity.value|get_range %} # range filter i added
<div>
{{ form.first_field_x }}
</div>
{% endfor %}
这里的x是一个数字,比如说:form.first_field_1,form.first_field_2。
如果我直接把数字放在这里,我当然会得到一个绑定的字段。
我也可以在模板中直接用HTML自己创建这些字段。
但是有没有办法把X替换成一个数字,这样结果就会是一个绑定的字段呢?
1 个回答
1
不,这样做是不行的,因为Django模板引擎有一些限制。
不过,有一个更简单的解决办法——把“my_fields”变成一个数组,然后用数组的索引来访问它,而不是把索引号放在变量名里。
def __init__(self, *args, **kwargs):
quantity = kwargs.get('quantity')
my_fields = []
for i in range(quantity):
my_fields.append(forms.CharField(label='HI Number', widget=forms.TextInput(attrs={'readonly': 'readonly'})))
self.fields['my_fields'] = my_fields
然后在模板中:
{% for x in form.quantity.value|get_range %} # range filter i added
{{ form.my_fields[x] }}
{% endfor %}