python - django 用一个提交按钮提交两种不同的表单

标签 python django forms

是否可以在 django 中使用一个提交按钮提交两种不同的表单? 我有一种称为“仪器”的形式和 4 种相等的形式“配置”。现在我想总是提交一个配置和仪器。例如仪器 + 配置 1 和仪器 + 配置 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

最佳答案

而不是多个 <form ..> html中的标签,只使用一个<form>标记并在其下添加所有表单的字段。

模板中的示例

<form >
    {{ form1.as_p }}
    {{ form2.as_p }}
    {{ form3.as_p }}
</form>

因此,当用户提交表单时,您将在 View 中看到所有表单数据,然后您可以在 View 中执行您正在执行的操作。作为

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")

关于python - django 用一个提交按钮提交两种不同的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18489393/

相关文章:

php向表中插入空白数据

用于验证 IPTV 流 (UDP) 的 Python 脚本

python - pandas:如何在聚合列时跳过行?

python - 为什么当我覆盖 base.html django-admin 时已禁用响应式界面?

django - __init__() 得到了一个意外的关键字参数 'min_length'

javascript - Reactjs 动态表单获取错误 OnChange 输入值?

python - 使用 Scipy 对分辨率不均匀的 3D 图像进行仿射变换的行为

python - Python 服务器中的全局变量

python - 在 Django Admin 中可视化上传的图像

php - 链接简历提交 HTML 表单以提交到 MySQL 数据库