有没有一种方法可以在 forms .save() 方法中查找模型表单是否正在创建新记录或更新现有记录?

Muh*_*hir 3 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
Run Code Online (Sandbox Code Playgroud)

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

Jav*_*ier 5

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

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