【问题标题】:Add form field to entire formset将表单域添加到整个表单集
【发布时间】:2023-03-21 01:07:01
【问题描述】:

我正在使用django-extra-views 创建一个表单集以更新一堆模型实例,但我需要向整个表单集添加一个额外的字段 - 询问用户是否打算通过电子邮件向相关人员发送任何更改formset 与否。

请注意,我不打算为表单集中的每个表单添加一个字段 - 整个表单集只需要一个额外的字段。

知道我该怎么做吗?

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    您可以在一个模板中使用多个表单,在一个模板中使用多个表单集,以及表单和表单集的组合。您只需提供不同的前缀即可将它们彼此区分开来。

    因此,您可以创建一个只有一个字段(可能是 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

    【讨论】:

      【解决方案2】:

      您可以在模板中添加字段如。

      <form method="post">
          {% csrf_token %}
          {{ formset.management_form }}
          {% for form in formset %}
           {{form}}
          {% endfor %}
          <input type="checkbox" name="send_email">
      </form>
      

      【讨论】:

        【解决方案3】:

        我没有看到任何在 formset 中设置字段的方法,但您可以解决。在设置文件中使用 key 来定义是否应该对 formset 进行任何更改,并检查如下

        if formset.has_changed() and settings.INTIMATION_KEY:
            send_mail()
        

        【讨论】:

        • 是的,但我希望用户能够选择是否在进行更改时发送电子邮件。
        猜你喜欢
        • 2017-01-04
        • 2020-01-22
        • 1970-01-01
        • 2013-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-08
        相关资源
        最近更新 更多