use*_*771 26 python forms django
是否可以提交两种不同的表格,在django中有一个提交按钮?我有一个称为"乐器"的表格和4个相同的表格"配置".现在我想提交一个配置和仪器.例如,仪器+配置1,仪器+配置2.每个配置都有自己的提交按钮.
我在配置表单中尝试了一个按钮:
<input onclick="submitForms()" class="btn btn-primary cfg" type="submit" value="Start" >
Run Code Online (Sandbox Code Playgroud)
并调用js函数'onclick':
submitForms = function(){
console.log('ok'); //only for testing
document.forms["firstForm"].submit();
document.forms["secondForm"].submit();
}
Run Code Online (Sandbox Code Playgroud)
这是我在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
Run Code Online (Sandbox Code Playgroud)
Roh*_*han 51
不要<form ..>在html中使用多个标签,而只使用一个<form>标签并在其下添加所有表单的字段.
模板中的示例
<form >
{{ form1.as_p }}
{{ form2.as_p }}
{{ form3.as_p }}
</form>
Run Code Online (Sandbox Code Playgroud)
因此,当用户提交表单时,您将获得视图中的所有表单数据,然后您可以在视图中执行您正在执行的操作.如
if request.method == 'POST':
form1 = Form1(request.POST)
form2 = Form2(request.POST)
print(request.POST)
if form1.is_valid() or form2.is_valid():
Run Code Online (Sandbox Code Playgroud)
它更适合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")
Run Code Online (Sandbox Code Playgroud)