Формсет с 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 в этой строке, он работает. Форма проходит, и начальное значение находится там.

Вернуться на верх