У меня есть две формы - исходная форма и форма результата.
Forms.py
class SourceForm(forms.Form):
some_source_field = forms.forms.CharField(...)
class ResultForm(forms.Form):
some_result_field = forms.forms.CharField(...)
В моем представлении используются formset_factory
для отображения двух экземпляры каждого и передает это в шаблон с диапазоном чисел, который соответствует числу форм, которые должны быть отображены.
Views.py
class MyView(Vew):
def get(self, request):
forms_to_render = 2
SourceFormSet = formset_factory(SourceForm, extra=forms_to_render)
ResultFormSet = formset_factory(ResultForm, extra=forms_to_render)
context = {
'source_forms': SourceFormSet,
'result_forms': ResultFormSet,
'init': range(0, forms_to_render),
}
В моем шаблон, я хочу сгенерировать контейнер, для которого содержатся исходные и исходные формы для каждого из чисел в данном диапазоне (в данном случае 2), как показано ниже.
шаблон. html
{% for i in init %}
<div class="container-fluid" id="primary_container_{{ i }}">
{{ source_forms.i }}
{{ result_forms.i }}
</div>
{% endfor %}
Справочная информация: у меня есть очередь javascript, которая отображает одну primary_container
за раз для обработки; Я скрываю «только что обработанный» контейнер и заполняю его в фоновом режиме, пока пользователь работает над следующим набором форм в очереди. Цель состоит в том, чтобы минимизировать время ожидания при заполнении формы.
Если я жестко закодирую значение индекса 0 или 1, форма будет отображаться.
{{ source_forms.0 }} <!-- works fine -->
{{ source_forms.1 }} <!-- works fine -->
Однако, это не работает
{% for i in init %}
{{ source_forms.i }} <!-- doesn't render form -->
{% endfor %}
Я подумал, что, возможно, i
больше не является правильным типом данных, поэтому я попробовал это, что также не работает
{% for i in init %}
{% with forloop.counter0 as x %}
{{ source_forms.x }} <!-- doesn't render form -->
{% endwith %}
{% endfor %}
Я получил это работает следующим образом:
{% for i in init %}
{% for form in source_forms %}
{% if forloop.counter0 == i %}
{{ form }} <!-- renders form -->
{% endif %}
{% endfor %}
{% endfor %}
Но есть ли более простой способ получить правильный form
в forms
с учетом индекса i
?