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