在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