1

我已经设法使用 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 %} 
4

3 回答 3

10

阅读更多模型表单集。您不需要有单独form的标签,这是使用表单集的全部意义所在。

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

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

于 2013-02-28T00:02:52.517 回答
0

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

如果我没记错的话,您正在尝试为单个avaluo对象编辑许多事实。我对吗?该表示将是具有许多内联表单集的单个“avaluo”表单,每个“factura”一个。

查看内联表单集工厂而不是模型表单集工厂。

于 2013-02-27T23:43:07.250 回答
0

我怀疑您将需要使用 Ajax 来完成 - 否则一旦提交了一个表单,您将无法采用其他方式。

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

它看起来像:

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

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

于 2013-02-27T23:32:09.807 回答