在Django模型的自定义save()方法中,应该如何识别新对象?

保存新记录(不更新现有记录)时,我想在Django模型对象的save()方法中触发特殊操作。

(self.id!= None)的检查是否必要且足以确保自我记录是新记录且不会被更新?有什么特殊情况可能会忽略吗?

回答:

澄清了self._state不是私有实例变量,而是以避免冲突的方式命名,self._state.adding现在检查是更可取的检查方法。

self.pk is None:

在新的Model对象中返回True,除非该对象的UUIDField为其primary_key

你可能要担心的极端情况是除id以外的其他字段是否存在唯一性约束(例如,其他字段上的辅助唯一索引)。在这种情况下,你仍然可以拥有新记录,但是无法保存它。

以上是 在Django模型的自定义save()方法中,应该如何识别新对象? 的全部内容, 来源链接: utcz.com/qa/415816.html

回到顶部