Формсет с request.post инициализируется неправильно
У меня возникла проблема с использованием наборов форм и request.POST. Когда я инициализирую набор форм без request.POST, он работает как положено, но не отправляет данные, так как форма никогда не является действительной. Если я включаю request.POST (как я делал со всеми другими формами в представлении), набор форм не инициализируется правильно. Данные не передаются, я не вижу никаких полей формы, и я получаю html-предупреждение, говорящее:
(Hidden field TOTAL_FORMS) This field is required.
(Hidden field INITIAL_FORMS) This field is required.
Вот очень упрощенная версия того, что я делаю в своем проекте. Это самый минимум, а сам проект намного сложнее. Но это должно быть сутью проблемы, с которой я столкнулся.
Смысл этой очень простой формы в том, что мой набор форм будет иметь 3 формы, каждая из которых инициализируется буквой, 'a', затем 'b', затем 'c'.
views.py
def MyView(request):
my_formset = formset_factory(my_form)
my_list = ['a', 'b', 'c']
if request.method == 'POST':
my_formset = formset(request.POST, initial=[{'field1':x} for x in my_list]) #If I remove 'request.POST' then the form initializes correctly, but will never pass .is_valid()
if my_formset.is_valid():
print('valid')
else:
print('invalid')
else:
my_formset = formset(initial=[{'field1':x} for x in my_list])
ctx = {'formset' = my_formset}
return render(request, 'template.html', ctx)
forms.py
class my_form(forms.Form):
field1 = forms.CharField(required=True)
шаблон
<form method="POST">
{% csrf_token %}
{{formset.management_form}}
{% for form in formset %}
{{form.field1}}
{% endfor %}
</form>
При включении request.POST в инициализацию my_formset, кажется, что он полностью убивает форму.
Когда я запускаю его без request.POST в этой строке, он работает. Форма проходит, и начальное значение находится там.