Столкнулся со странностью работы шаблонизатора Jinja в Django. Нужно установить
selected для обработанного выпадающего списка
option. Делаю так:
<select name="ft">
<option value="0">Все ({{ total_item }} шт.)</option>{% for i in menu_typ %}
<option value="{{ i.id }}"{% if request.GET.ft == i.id %} selected{% endif %}>
{{ i.szName|capfirst }} ({{ i.Num }} шт.)
</option>{% endfor %}
</select>
Никаких
selected ни для одного
option не появляется.
,
{% if request.GET.ft == i.id %}
не срабатывает в принципе. Всевозможные эксперименты показали, что причина несоответствие типов:
i.id -- число;
request.GET.ft -- строка. Привести обе переменные к одному типу удалось с помощью костыля
add --
{% if request.GET.ft|add:0 == i.id|add:0 %}
. Таким образом, если сделать вот так:
<select name="ft">
<option value="0">Все ({{ total_item }} шт.)</option>{% for i in menu_typ %}
<option value="{{ i.id }}"{% if request.GET.ft|add:0 == i.id %} selected{% endif %}>
{{ i.szName|capfirst }} ({{ i.Num }} шт.)
</option>{% endfor %}
</select>
Всё работает. Это костыль, или все так делают? Какие ещё есть варианты??