小编典典

在 django 模型自定义 save() 方法中,你应该如何识别一个新对象?

all

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

检查 (self.id != None) 是否有必要且足以保证自我记录是新的并且没有被更新?这可能会忽略任何特殊情况?


阅读 56

收藏
2022-06-21

共1个答案

小编典典

更新:
澄清self._state不是私有实例变量,而是以这种方式命名以避免冲突,检查self._state.adding现在是更好的检查方式。


self.pk is None:

在新的 Model 对象中返回 True ,除非该对象具有 aUUIDField作为其primary_key.

您可能需要担心的极端情况是除了 id 之外的字段是否存在唯一性约束(例如,其他字段上的二级唯一索引)。在这种情况下,您手头可能仍有新记录,但无法保存。

2022-06-21