Каждая валидация формы в наборе форм
Некоторые проблемы с валидацией.
Я использую эту конструкцию в своем шаблоне:
<form method="POST">
{% csrf_token %}
{{ formset.media.js }}
{% for form in formset %}
<p>{{ form }}</p>
{% endfor %}
<button type="submit" class="btn btn-primary">Send</button>
И эта валидация в представлениях:
def flow_type(request):
patternFormset = modelformset_factory(CashFlowPattern, fields='__all__')
if request.method == 'POST':
formset = patternFormset(request.POST)
if formset.is_valid():
formset.save()
formset = patternFormset()
template = 'cash_table/index.html'
context = {
# 'form': form,
'formset': formset
}
return render(request, template, context)
Я получаю форму на странице, но после отправки ничего не происходит.
Но если я использую другую конструкцию шаблона, она работает:
<form method="POST">
{% csrf_token %}
{{ formset.media.js }}
{{ formset }}
<button type="submit" class="btn btn-primary">Send</button>
</form>
Но затем я получаю все поля новой формы в одной строке.
Я думаю, что вам нужно иметь {{ formset.management_form }}
в шаблоне, где вы перебираете формы набора форм, чтобы Django знал, что это набор форм, и знал, сколько форм в наборе форм, и т.д...
<form method="POST">
{% csrf_token %}
{{ formset.management_form }}
{{ formset.media.js }}
{% for form in formset %}
<p>{{ form }}</p>
{% endfor %}
<button type="submit" class="btn btn-primary">Send</button>
При использовании {{ formset }}
управление осуществляется автоматически (это ярлык).
Источник: https://docs.djangoproject.com/en/4.1/topics/forms/formsets/#custom-formset-validation