django - 如果模型表单正在创建新记录或更新现有记录,有没有办法在表单 .save() 方法中找到?

标签 django django-forms

我正在做的事情是了解表单是在创建新记录还是更新现有记录

class MyForm(forms.ModelForm):
    def save(self, commit=True):
        _new = True if not self.instance.id else False
        keyword = super(MyForm, self).save()
        if _new:
            do_something()
        return keyword

在调用 super(MyForm, self).save() 之后是否有其他方法可以找到它,而无需在调用“super”之前明确检查它,就像我对“_new”所做的那样?

最佳答案

它只是 .id(实际上是 .pk)字段。如果它是 None(可能是任何“虚假”值),那么它就是一个新记录并且 .save() 将使用 INSERT。否则它是现有记录的键,它将使用 UPDATE

https://docs.djangoproject.com/en/1.8/ref/models/instances/#how-django-knows-to-update-vs-insert

关于django - 如果模型表单正在创建新记录或更新现有记录,有没有办法在表单 .save() 方法中找到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28433486/

相关文章:

python - 在我的博客上 - 匹配的查询不存在

python - 无法分配必须是表单保存上的实例

python - memcache.get 返回错误的对象(Celery、Django)

python - 使用 Django 过滤器

python - Django Nonrel - 无法登录开发服务器上的管理面板

django - Django 模型可以从管理界面自动填写当前经过身份验证的用户吗?

django - View : Field expected a number but got SimpleLazyObject 中的类型错误

python - 缩短ModelForm字段Django的小数位

python - 如何在自定义页面 Django 中使用管理表单

django post_save 信号发送过时的内联表单集