Получить значение name attr для набора форм с соответствующим префиксом и индексом формы набора форм
Я вручную отображаю значения modelformset_factory в шаблоне Django с помощью приведенного ниже фрагмента. Один из входов использует тип select, и я заполняю опции, используя другое контекстное значение, переданное из представления после внешних вызовов API, так что нет никакой связи модели между данными и формой, которую я пытаюсь отобразить.
view
my_form = modelformset_factory(MyModel, MyModelForm, fields=("col1", "col2"), extra=0, min_num=1, can_delete=True,)
шаблон
{{ my_form.management_form }}
{% for form in my_form %}
<label for="{{ form.col1.id_for_label }}">{{ form.col1.label }}</label>
{{ form.col1 }}
<label for="{{ form.col2.id_for_label }}">{{ form.col2.label }}</label>
<select id="{{ form.col2.id_for_label }}" name="{{ form.col2.name }}">
<option disabled selected value> ---- </option>
{% for ctx in other_ctx %}
<option value="{{ ctx.1 }}">{{ ctx.2 }}</option>
{% endfor %}
</select>
{% endfor %}
Заполнение опции выбора other_ctx
представляет собой список[кортеж]
Я пытаюсь получить значение name
для ввода col2
с помощью {{ form.col2.name }}
, но вместо col2
возвращается только form-0-col2
. Я могу добавить значение form-0-
к {{ form.col2.name }}
, но мне интересно, если:
- Я могу сделать все вышеперечисленное автоматически? Я предполагаю, что набор форм должен знать имена начальных наборов форм с соответствующим индексом набора форм, поступающим из представления. .
- Есть ли способ включить опции выбора в начальный набор форм, который отправляется в шаблон, чтобы я мог просто использовать
{{ form.col2 }}
?
Только что увидел, что я могу использовать form-{{ forloop.counter0 }}-{{ form.col2.name }}
в качестве альтернативы, если автоматическое получение не работает.
Я думаю, что вам нужно имя form.col2.html_name - docs
Это имя, которое будет использоваться в HTML-атрибуте name виджета. При этом учитывается префикс формы.