@Enter_a_nickname

Почему я получаю ошибку о незаполненном скрытом поле формы №1 (динамическая), если сохраняю данные из другой формы?

В проекте реализована страница с формами. Одна из формы является динамической (DogFormSet) , дублирование идет за счет js скрипта.
Все функции сохранения данных из форм разделены по именам, чтобы django понимал какую именно форму нужно сохранять.
Отдельное сохранение динамической формы (DogFormSet) работает корректно и не вызывает ошибок.
Но при сохранении данных из других форм я получаю error на динамической форме (после обновления страницы форма пропадает и я получаю такие ошибки:
(Скрытое поле TOTAL_FORMS) Обязательное поле.
(Скрытое поле INITIAL_FORMS) Обязательное поле.)

Не смотря на ошибки данные из других форм сохраняются.

мой views.py:

class dogaddview(TemplateView):
     template_name = 'main/dogsform.html'

     def get(self, request, *args, **kwargs):
            form2 = SpeedsForms()
            formset = DogFormSet(queryset=dog.objects.none())
            form4 = ColorForms()
            form5 = DogRequestsForm()

            datas = {
                   'form2': form2,
                   'DogFormSet': formset,
                   'form4': form4,
                   'form5': form5,
                }
            return render(request, 'main/dogsform.html', datas)

     def post(self, request, *args, **kwargs):
            form2 = SpeedsForms(request.POST)
            formset = DogFormSet(request.POST)
            form4 = ColorForms(request.POST)
            form5 = DogRequestsForm(request.POST)

            if 'speed' and form2.is_valid():
                    form2.save()

            if 'dogs' and formset.is_valid():
                     formset.save()

            if 'color' and form4.is_valid():
                     form4.save()

            if 'Req' and form5.is_valid():
                      form5.save()

            data = {
                     'form2': form2,
                     'formset': formset,
                     'form4': form4,
                     'form5': form5,
                     }

            return self.render_to_response(data)


мой html:
{% block content %}
    <div class="features">
        <form method="post">
            {% csrf_token %}<br>
            {{ form4.as_p }}<br>
            <button class="btn btn-success" type="submit" name="color">Сохранить</button>
        </form>
        <form method="post">
            {% csrf_token %}<br>
            {{ form2.as_p }}
            <button class="btn btn-success" type="submit" name="speed">Сохранить</button>
        </form>
        <form id="form-container" method="post">
            {% csrf_token %}<br>
            {{DogFormSet.management_form}}
            <div class="DogForm">
            {{ formset.as_p }}<br>
            </div>
            <button id="add-form" type="button">Add Another dogs</button>
            <button class="btn btn-success" type="submit" name="dogs">Сохранить</button>
        </form>
        <form method="post">
            {% csrf_token %}<br>
            {{ form5.as_p }}<br>
            <button class="btn btn-success" type="submit" name="Req">Сохранить</button>
        </form>
    </div>

    <script>
        let DogForm= document.querySelectorAll(".DogForm")
        let container = document.querySelector("#form-container")
        let addButton = document.querySelector("#add-form")
        let totalForms = document.querySelector("#id_form-TOTAL_FORMS")

        let formNum = DogForm.length-1
        addButton.addEventListener('click', addForm)

        function addForm(e){
            e.preventDefault()

            let newForm = DogForm[0].cloneNode(true)
            let formRegex = RegExp(`form-(\\d){1}-`,'g')

            formNum++
            newForm.innerHTML = newForm.innerHTML.replace(formRegex, `form-${formNum}-`)
            container.insertBefore(newForm, addButton)

            totalForms.setAttribute('value', `${formNum+1}`)
        }
    </script>

{% endblock %}


Как мне избежать выявления данной ошибки при сохранении данных из других форм?
  • Вопрос задан
  • 309 просмотров
Пригласить эксперта
Ответы на вопрос 2
@alp-rostov
Такая же проблема. Как ее решить?
Ответ написан
Комментировать
@Ivvyr
Столкнулся с похожей проблемой.
Причина была в следующем:
в шаблоне при включении management_form было указано не верное название форм,
В моем случае вместо {{ formset.management_form }} я указал
{{ add_formset.management_form }}. то есть я в шаблон передал formset а указал add_formset (переменную из другого представления).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы