我有一个选择字段,即使在出现错误(例如,必填字段为空)之后也应保持其选定值,但它与当前值不匹配。
<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.movie.value的值为2,但是在x = 2时你的循环代码中,等式不会给出回真,所以没有选定的值将被保留。
为什么会出现问题?
答案 0 :(得分:0)
问题是 form.fields.movie.choices 会将id作为数字返回(我猜是int),以及 中的数据form.movie.value 是一个字符串,因此为了比较两者, x 需要像这样进行字符串转换: x | stringformat:&#34; s&#34; ,然后两者可以毫无问题地进行比较。