混淆了ModelForm()的孩子的save()中的self.instance

Gez*_*zim 3 django instance save modelform

保存()文档中解释说:

ModelForm的子类可以接受现有的模型实例作为关键字参数实例; 如果提供了这个,save()将更新该实例.如果未提供,save()将创建指定模型的新实例

然而,self.instancesave()总是有一个对象.

那么,我如何判断它instance是现有的还是新创建的?

Mic*_*nor 6

您可以检查self.instance.pk模型是否先前已保存.但是,在您创建模型的新实例然后在保存之前使用该实例初始化模型表的情况下,这可能是不可靠的.

基于Django 1.2中的BaseModelForm源代码的另一种可能性是检查self.instance._adding,如果模型是创建的,则为True,否则为False.但是,我没有测试过这个,所以YMMV.

如果第一个选项可行,我建议使用它而不是ModelForms的未记录功能 - 它在将来不太可能改变,可能更清晰.