【问题标题】:Django ModelForm - just want to modify save() to have commit=FalseDjango ModelForm - 只想修改 save() 以使 commit=False
【发布时间】:2014-03-12 03:07:35
【问题描述】:

我正在尝试使用仅包含一些模型字段的 ModelForm,以便用户可以提交数据,但我希望将提交的内容通过电子邮件发送给我,而不是保存在数据库中,以便我可以检查它们并添加信息保存之前的其余字段。

所以一开始我想我需要修改 save() 以便这个模型表单的默认值是 commit=False。

我查看了文档,因为我想做的就是将这个特定模型的默认值更改为 commit=False 我想知道如何进行简单的修改。如果我可以执行以下操作,然后将实例数据通过电子邮件发送给自己。

class SK_form(ModelForm):
class Meta:
    model = Soup_Kitchen
    fields = ('name', 'address', 'phone_number', 'contact_person')

def save(self, commit=True):
    instance = super(SK_form, self).save(commit=False)
    return instance

【问题讨论】:

    标签: django geodjango django-forms


    【解决方案1】:

    我认为这不是你真正想要做的。如果您这样做,数据将不会保留在任何地方。因此,当您收到电子邮件时,您必须将数据剪切并粘贴回 Django 表单以重新创建实例,然后才能添加自己的数据并保存。

    模型上最好有一个布尔字段——例如complete——记录数据是否已经检查和完成,默认为False。然后,您可以拥有一个自定义管理器,默认情况下它会过滤掉所有带有 complete=False 的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-12
      • 2015-10-24
      • 2011-06-12
      • 2015-08-11
      • 2013-06-07
      • 2011-10-28
      • 2012-10-29
      • 1970-01-01
      相关资源
      最近更新 更多