【发布时间】:2023-03-21 01:07:01
【问题描述】:
我正在使用django-extra-views 创建一个表单集以更新一堆模型实例,但我需要向整个表单集添加一个额外的字段 - 询问用户是否打算通过电子邮件向相关人员发送任何更改formset 与否。
请注意,我不打算为表单集中的每个表单添加一个字段 - 整个表单集只需要一个额外的字段。
知道我该怎么做吗?
【问题讨论】:
标签: django django-forms
我正在使用django-extra-views 创建一个表单集以更新一堆模型实例,但我需要向整个表单集添加一个额外的字段 - 询问用户是否打算通过电子邮件向相关人员发送任何更改formset 与否。
请注意,我不打算为表单集中的每个表单添加一个字段 - 整个表单集只需要一个额外的字段。
知道我该怎么做吗?
【问题讨论】:
标签: django django-forms
您可以在一个模板中使用多个表单,在一个模板中使用多个表单集,以及表单和表单集的组合。您只需提供不同的前缀即可将它们彼此区分开来。
因此,您可以创建一个只有一个字段(可能是 BooleanField)的表单,然后将您的表单集和新表单都传递给模板。
文档没有准确描述这一点,但非常接近: https://docs.djangoproject.com/en/2.1/ref/forms/api/#prefixes-for-forms https://docs.djangoproject.com/en/2.1/topics/forms/formsets/#using-more-than-one-formset-in-a-view
【讨论】:
您可以在模板中添加字段如。
<form method="post">
{% csrf_token %}
{{ formset.management_form }}
{% for form in formset %}
{{form}}
{% endfor %}
<input type="checkbox" name="send_email">
</form>
【讨论】:
我没有看到任何在 formset 中设置字段的方法,但您可以解决。在设置文件中使用 key 来定义是否应该对 formset 进行任何更改,并检查如下
if formset.has_changed() and settings.INTIMATION_KEY:
send_mail()
【讨论】: