我想在保存新记录(而不是更新现有记录)时,在Django模型对象的save()方法中触发一个特殊操作。
是检查(self。id != None)有必要且充分地保证自我记录是新的且没有被更新?有没有可能被忽略的特殊情况?
我想在保存新记录(而不是更新现有记录)时,在Django模型对象的save()方法中触发一个特殊操作。
是检查(self。id != None)有必要且充分地保证自我记录是新的且没有被更新?有没有可能被忽略的特殊情况?
当前回答
用pk代替id:
if not self.pk:
do_something()
其他回答
自我检查。Id假设Id是模型的主键。更通用的方法是使用pk快捷方式。
Is_new = self。pk为None
这是否适用于上述所有场景?
if self.pk is not None and <ModelName>.objects.filter(pk=self.pk).exists():
...
要知道您是在更新还是插入对象(数据),请在表单中使用self.instance.fieldname。在表单中定义一个干净的函数,并检查当前值项是否与前一个值项相同,如果不是,则更新它。
自我。Instance和self.instance.fieldname与新值进行比较
用pk代替id:
if not self.pk:
do_something()
检查自我的另一种方法。我们可以检查self。模型的状态
self._state。添加才是真正的创造
self._state。添加是错误的更新
我是从这一页上得到的