ModelForm的子类可以接受 现有模型实例作为关键字 论证实例;如果是这样的话 提供,save()将更新 实例。如果没有提供,请保存() 将创建一个新的实例 指定的模型
但是,self.instance
中的save()
始终有一个对象。
那么,我如何判断instance
是否存在或是否是新创建的?
答案 0 :(得分:6)
您可以查看self.instance.pk
以查看该模型之前是否已保存。但是,如果您创建了模型的新实例,然后在保存之前使用该实例初始化了一个模型,那么这可能是不可靠的。
另一种可能性,基于Django 1.2中的BaseModelForm源代码,是检查self.instance._adding
,如果模型是创建的,则为True,否则为False。但是,我没有测试过这个,所以YMMV。
如果第一个选项可行,我建议使用它而不是ModelForms的未记录功能 - 它将来不太可能改变,可能更清晰。