Django表单选择的选项无法识别,if语句失败

时间:2016-06-04 18:05:55

标签: python django django-forms django-templates

我有一个选择字段,即使在出现错误(例如,必填字段为空)之后也应保持其选定值,但它与当前值不匹配。

<label for="{{ form.movie.id_for_label }}" class="col-sm-3 control-label">Movie:</label>
<select id="{{ form.movie.id_for_label }}" name="movie" class="form-control">
{% for x,y in form.fields.movie.choices %}
    <option value="{{ x }}"{% if form.movie.value == x %} selected="selected"{% endif %}>{{ y }}</option>
{% endfor %}

如果我选择值2,那么在出错之后,form.movi​​e.value的值为2,但是在x = 2时你的循环代码中,等式不会给出回真,所以没有选定的值将被保留。

为什么会出现问题?

1 个答案:

答案 0 :(得分:0)

问题是 form.fields.movi​​e.choices 会将id作为数字返回(我猜是int),以及 中的数据form.movi​​e.value 是一个字符串,因此为了比较两者, x 需要像这样进行字符串转换: x | stringformat:&#34; s&#34; ,然后两者可以毫无问题地进行比较。