我是一个自定义模板,用于在我的Django网站上呈现我的表单。此代码呈现ChoiceFields:
<select id="{{ "id_"|add:field.html_name }}"
class="form-control"
name="{{ field.html_name }}">
{% for id, name in field.field.choices %}
<option value="{{ id }}"
{% if field.value|default_if_none:"" == id %}
selected="selected"
{% endif %}
>{{ name }}</option>
{% endfor %}
</select>
当ChoiceField没有初始值时,此代码可以正常工作。如果我对表单进行求和,但表单中有错误(sp我回到我的表单,所有数据都在我提交的时候),正确的选择得到selected="selected"
属性,所以它完美无缺。
但是当我在Django视图中设置表单的默认值时(正确地在表单&#c; init()函数中,如下所示:self.fields['card_type'].initial = self.card.card_type_id
),这将停止工作。
如果我在我的模板中手动放置form.value
变量,它会显示正确的整数。在id, name for-loop
中,id
值相同。这些没有任何其他东西的空白。但是代码不起作用,不等于self.fields['card_type'].initial = self.card.card_type_id
条件的真实。
如果我修改上一个代码,打印id
和field.value
而不是{{name}}
,请执行以下操作:({{id}}-{{ field.value }})
,以下HTML代码&#39 ;生成:
<select id="id_card_type" class="form-control" name="card_type">
<option value="3">(3-2)</option>
<option value="2">(2-2)</option>
<option value="1">(1-2)</option>
</select>
id
,即1,2和3!那是form.value
,即2!但是没有selected="selected"
......为什么不工作?
谢谢!