Параметры рендеринга ModelChoiceField
Я хочу отобразить опции для поля ModelChoiceField:
{% for value, label in form.fields.event_type.choices %}
<option value="{{ value }}"
{% if form.fields.event_type.value|add:"" == value %}selected="selected"{% endif %}>
{{ label }} -- {{ form.event_type.value }} .. {{ value }}
</option>
{% endfor %}
Но это не работает: selected="selected"
не установлено.
Вывод:
<option value="">
--------- -- 2 ..
</option>
<option value="1">
OptionOne -- 2 .. 1
</option>
<option value="2">
OptionTwo -- 2 .. 2
</option>
Это странно, так как вывод "2 ... 2" не вызвал "if" для включения selected
.
Как это решить?
Я нашел решение. В "if" сравнивалось целое число со строкой, что не равно.
Это работает:
{% for value, label in form.fields.event_type.choices %}
<option value="{{ value }}"
{% if form.event_type.value == value|stringformat:"i" %}selected="selected"{% endif %}>
{{ label }} -- {{ form.event_type.value }} .. {{ value }}
</option>
{% endfor %}