Опубликовать Django Formset через AJAX

Здесь новичок в Джанго.

Я использую наборы форм в Django как часть шага в процессе мастера, и я хотел бы отправить их, как только процесс будет завершен (не с помощью классической отправки). Я хотел бы отправить его вместе с другими данными через POST, используя Javascript.

Есть ли другой способ, чем поочередно сериализовать все формы и отправить их в массив json "вручную"? Можно ли отправить их как "formset"?

Пример того, что у меня есть:

в views.py

formset = formset_factory(CustomerForm, extra=customer_number)
return render (request, 'customer/customer_info.html', {'customerformset':formset})

в шаблоне

{% for form in customerformset %}
{{form}}
{% endfor %}

в представленной HTML

<input class="form-control input-sm" maxlength="30" name="form-0-name" placeholder="Name" required="true" type="text">
<input class="form-control input-sm" maxlength="30" name="form-0-surname" placeholder="Surname" required="true" type="text">
<input class="form-control input-sm" maxlength="30" name="form-0-email" placeholder="Email" required="true" type="text">

2 ответа

Хотя формы являются отдельными с точки зрения Django, в HTML они все содержатся в одном и том же <form> элемент. Таким образом, вы можете сериализовать их за один раз:

data = $('form').serialize();

Обратите внимание, что это не преобразуется в JSON, и в этом нет необходимости: это преобразует значения в обычные данные с кодировкой формы, которые могут быть отправлены напрямую и использованы в Django через стандарт request.POST,

Вы можете использовать Мастер форм в django, и каждый шаг может иметь совершенно разные классы форм. Информация может храниться либо в файле cookie, либо в сеансе, и после окончательной отправки (и проверки, запомните, как и в любой другой форме) информация будет удалена из сеанса.

class ContactWizard(AccessMixin, NamedUrlSessionWizardView):

Обычно мастер удобен в использовании, однако он может стать довольно сложным, если вы захотите добавить, например, шаги регистрации / входа между ними.

Другие вопросы по тегам