Python django使用一个提交按钮提交两个不同的表单
是否可以使用django中的一个提交按钮提交两个不同的表单? 我有一个叫做“仪器”的表格和4个相等的表格“配置”。现在我想提交一个配置和工具。e、 g.仪表+配置1和仪表+配置2。每个配置都有自己的提交按钮 我用配置表单中的一个按钮进行了尝试:Python django使用一个提交按钮提交两个不同的表单,python,django,forms,Python,Django,Forms,是否可以使用django中的一个提交按钮提交两个不同的表单? 我有一个叫做“仪器”的表格和4个相等的表格“配置”。现在我想提交一个配置和工具。e、 g.仪表+配置1和仪表+配置2。每个配置都有自己的提交按钮 我用配置表单中的一个按钮进行了尝试: <input onclick="submitForms()" class="btn btn-primary cfg" type="submit" value="Start" > 这是我在views.py中的方法: if request.me
<input onclick="submitForms()" class="btn btn-primary cfg" type="submit" value="Start" >
这是我在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
不要在html中有多个
标记,只使用一个
标记,并在其下添加所有表单的字段
模板中的示例
<form >
{{ form1.as_p }}
{{ form2.as_p }}
{{ form3.as_p }}
</form>
在这种情况下使用它更好
所以你可以
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")
扩展@Rohan答案,并在表单上添加更多控件 不依赖表单/无关系/保存多个表单中的任何表单 单独检查每个表单以检查哪些表单无效。如果包含错误,则将它们存储到上下文中,或者重定向它们
if request.method == 'POST':
form1 = Form1( request.POST,prefix="form1")
form2 = Form2( request.POST,prefix="form2")
if form1.is_valid():
# save them
# context['form1_message'] = 'Form1 saved'
else:
#save them into context
context['form1']= form1
if form2.is_valid():
# save them
# context['form2_message'] = 'Form2 saved'
else:
#save them into context
context['form2']= form2
if form1.is_valid() and form2.is_valid():
#that's mean both form is valid and saved successfully
return redirect('page')
else:
return render('/page', context)
else:
form1 = Form1(prefix="form1")
form2 = Form2(prefix="form2")
从属表单/模型表单(1-1,1-m)/关系表单
一个父窗体和一个子窗体依赖于父窗体。如果两个表单同时保存或检查错误,则我们将使用此方法
if request.method == 'POST':
form1 = Form1( request.POST,prefix="form1")
form2 = Form2( request.POST,prefix="form2")
if not form1.is_valid():
#save them into context
context['form1']= form1
if not form2.is_valid():
#save them into context
context['form2']= form2
if form1.is_valid() and form2.is_valid():
#that's mean both form is valid and saved successfully
return redirect('page')
else:
return render('/page', context)
else:
form1 = Form1(prefix="form1")
form2 = Form2(prefix="form2")
是的,我看过这篇文章,但是如果没有一个只有js函数的表单集,这不可能吗?如果我一次提交所有表单,这看起来很好,但是我想同时提交一个配置表单和工具表单。因此,如果我使用自己的提交按钮提交第二个配置表单,那么仪器表单也应该提交。另外3个配置的submit按钮也应该这样做。始终提交我单击的提交按钮的配置表单和仪器表单。如果我的表单提交到不同的代码段,然后再次收集到单个视图,该怎么办?
if request.method == 'POST':
form1 = Form1( request.POST,prefix="form1")
form2 = Form2( request.POST,prefix="form2")
if form1.is_valid():
# save them
# context['form1_message'] = 'Form1 saved'
else:
#save them into context
context['form1']= form1
if form2.is_valid():
# save them
# context['form2_message'] = 'Form2 saved'
else:
#save them into context
context['form2']= form2
if form1.is_valid() and form2.is_valid():
#that's mean both form is valid and saved successfully
return redirect('page')
else:
return render('/page', context)
else:
form1 = Form1(prefix="form1")
form2 = Form2(prefix="form2")
if request.method == 'POST':
form1 = Form1( request.POST,prefix="form1")
form2 = Form2( request.POST,prefix="form2")
if not form1.is_valid():
#save them into context
context['form1']= form1
if not form2.is_valid():
#save them into context
context['form2']= form2
if form1.is_valid() and form2.is_valid():
#that's mean both form is valid and saved successfully
return redirect('page')
else:
return render('/page', context)
else:
form1 = Form1(prefix="form1")
form2 = Form2(prefix="form2")