繁体   English   中英

如何在Django中使用一个提交按钮提交多个表单?

[英]How do I submit multiple forms with a single submit button in django?

我设法使用modelformset_factory创建了所需的表单。

avaluos = Avaluo.objects.filter(Estatus__contains='CONCLUIDO',Factura__isnull=True)
FacturaFormset = modelformset_factory(Avaluo,form=FacturaForm,extra=0)

当前,这为找到的每一行生成以下HTML:

<form id="id-FacturaForm" class="blueForms" method="post">[..]</form>
<form id="id-FacturaForm" class="blueForms" method="post">[..]</form>
<form id="id-FacturaForm" class="blueForms" method="post">[..]</form>

我想使用一个提交按钮提交所有表格。

有任何想法吗?

更新

我最终使用了django-crispy-forms ,它使我可以为每一行整理输入内容,然后我只是手动添加了表单并提交。

   self.helper.form_tag = False


{{example_formset.management_form }}
       {% for a,b in olist %}
{{ b.id }}
<tr>
    <td style="width:10px;"> {% crispy b %} </td>
    <td> {{a.id}} </td>     
</tr>
{% endfor %} 

阅读更多关于模型表单集的信息 您不需要单独的form标签,这是使用form的全部重点。

<form method="post" action="">
    {{ factura_formset.management_form }}
    <table>
        {% for form in factura_formset %}
            {{ form }}
        {% endfor %}
    </table>
</form>

此外,每次在页面上多次使用id属性时,开发人员都会哭泣自己睡在世界的某个地方。

我怀疑您将需要使用Ajax进行操作-否则,一旦提交一种表单,您将无法采用其他方式。

有一些jQuery表单库应该使它相对简单。 例如, http://malsup.com/jquery/form/

它看起来像:

$('#button-id').click(function() {
  $('.blueForms').ajaxSubmit();
});

当然,您将需要处理错误并等待所有表单提交。

如果您尝试创建许多“相同”形式的实例(也就是说,它们看起来都相同),就好像它是属于单个主元素的多个子实例之一一样,则实际上不需要创建一个每个表单集的表单标签。

如果我没记错的话,那么您将尝试为单个avaluo对象编辑许多facturas 我对吗? 该表示形式将是具有许多内联表单集的单个“求值”表单,每个“事实”都一个。

检出内联表单集工厂,而不是modelformset工厂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM