Django представляет две разные формы с одной кнопкой отправки
Можно ли отправить две разные формы, с одной кнопкой отправки в django?
У меня есть одна форма под названием "инструмент" и 4 равные формы "config". теперь я бы хотел отправить всегда одну конфигурацию и инструмент. например инструмент + config 1 и инструмент + config 2. и каждая конфигурация имеет свою собственную кнопку отправки.
Я попробовал его с одной кнопкой в форме конфигурации:
<input onclick="submitForms()" class="btn btn-primary cfg" type="submit" value="Start" >
и вызовите функцию js 'onclick':
submitForms = function(){
console.log('ok'); //only for testing
document.forms["firstForm"].submit();
document.forms["secondForm"].submit();
}
это мой метод в views.py:
if request.method == 'POST':
form1 = dataproviderInstrumentForm(request.POST)
form2 = dynamicTimeseriesForm(request.POST)
print(request.POST)
if form1.is_valid() or form2.is_valid():
# do some stuff
else:
form1 = dataproviderInstrumentForm() # an unbound form
form2 = dynamicTimeseriesForm() # an unbound form
Ответы
Ответ 1
Вместо того, чтобы иметь несколько тегов <form ..>
в html, используйте только один тег <form>
и добавьте в него поля всех форм.
Пример в шаблоне
<form >
{{ form1.as_p }}
{{ form2.as_p }}
{{ form3.as_p }}
</form>
Поэтому, когда пользователь отправляет форму, вы получите все данные форм, а затем можете делать то, что вы делаете. Как
if request.method == 'POST':
form1 = Form1(request.POST)
form2 = Form2(request.POST)
print(request.POST)
if form1.is_valid() or form2.is_valid():
Лучше использовать form prefix
в таких случаях.
Итак, вы можете сделать
if request.method == 'POST':
form1 = Form1( request.POST,prefix="form1")
form2 = Form2( request.POST,prefix="form2")
print(request.POST)
if form1.is_valid() or form2.is_valid():
else:
form1 = Form1(prefix="form1")
form2 = Form2(prefix="form2")