可以用Django中的一个提交按钮提交两个不同的表单吗? 我有一个叫"仪器"的表格和四个相等的表格"CONFIG".现在我想始终提交一个配置和仪器.例如,Instrument+Config 1和Instrument+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

推荐答案

不要在html中有多个<form ..>标记,只使用一个<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")

Django相关问答推荐

如何根据属性的 Select 对查询集进行排序

Django ORM Groupby

Django为不同应用程序发出信号

Django-表单(ModelForm)中的数据不保存在现有数据库中

如何连接到 docker 容器中的 postgres 数据库?

Django InlineModelAdmin:部分显示内联模型并链接到完整模型

如何从 django 模板生成静态 html 文件?

如何从不是 django 元素文件夹的文件夹中运行 gunicorn

Django - 如何从模型中 Select 特定列?

django 有条件地过滤对象

Django:在管理界面中显示图像

PyCharm 无法正确识别需求 - Python、Django

如何使用基于类的视图处理表单(通过 get 或 post)?

Django:如何编写查询以使用多列进行排序,通过模板显示

在 Django 中使用邮箱地址或用户名登录用户

Django urls 直接到 html 模板

django python 日期时间设置为午夜

Django Admin:如何在内联中显示模型上定义的属性?

如何过滤(或替换)在 UTF-8 中占用超过 3 个字节的 unicode 字符?

Django 多项 Select 字段/复选框 Select 多个