当我保存新记录(而不是更新现有记录)时,我想在Django模型对象的save()方法中触发一个特殊操作.
判断(self.id!=None)是否有必要且足以保证Self记录是新的且不被更新?这里可能忽略的特殊情况是什么?
当我保存新记录(而不是更新现有记录)时,我想在Django模型对象的save()方法中触发一个特殊操作.
判断(self.id!=None)是否有必要且足以保证Self记录是新的且不被更新?这里可能忽略的特殊情况是什么?
更新:澄清了self._state
不是私有实例变量,但为避免冲突而这样命名,判断self._state.adding
现在是首选的判断方式.
self.pk is None:
在新的Model对象中返回True,除非该对象的primary_key
为UUIDField
.
您可能需要担心的是,除了id之外的字段上是否有唯一性约束(例如,其他字段上的二级唯一索引).在这种情况下,您可能仍有一条新记录在手,但无法保存.