Ошибка валидации не отображается на шаблоне с 2 формами
У меня есть шаблон с формой, в котором данные собираются в 2 Django-формах, но отправляются в представление в одном посте следующим образом:
<form action="" method="post">
{% csrf_token %}
<div class="form1">
<div>
<label for="field1">field1</label>
{{ form1.field1 }}
</div>
<div>
<label for="field2">field2</label>
{{ form1.field2 }}
</div>
<div>
<label for="field3">field3</label>
{{ form1.field3 }}
</div>
</div>
{{ form2set.management_form }}
<div id='form2set-form-list'>
{% for form in form2set %}
<div class='form2set-form'>
{{ form.as_p }}
</div>
{% endfor %}
</div>
<input type="submit">
</div>
</form>
Данные собираются в представлении и проверяются. Для проверки у меня есть валидации, объявленные в обеих формах. В случае если валидация не проходит из-за неправильных данных, она возвращает повышение (в зависимости от того, какая или какие валидации не прошли). Это повышение и должно быть показано на экране пользователю в качестве ошибки.
Если сбой валидации произошел во второй форме, она корректно и без проблем отображает ошибку. Теперь, в случае если сбой произошел в первой форме, страница просто перезагружается и не показывает ошибку. Данные, уже введенные в форму, не теряются и могут быть исправлены, но ошибка не отображается.
Мое мнение примерно такое:
def create(request):
form1 = Form1(request.POST or None)
form2 = formset_factory(Form2, extra=0)
form2Set = form2(request.POST or None, prefix='participant')
context = {
'form1': form1,
'form2Set': form2Set,
}
if request.method == 'POST':
if form1.is_valid() and form2Set.is_valid():
# Logic
else:
context['form1'] = form1
context['form2Set'] = form2Set
return render(request, 'template', context)