我想覆盖模型的save()方法并检查对某些字段的更改:
def save(self):
if self.counter != self.original_counter: # that's what I want
...
我之前看过这个问题,答案是从数据库中获取对象并将db值与当前值进行比较:
def save(self):
original = MyModel.objects.get(pk=self.pk)
if self.counter != original.counter:
...
但这是浪费数据库查询,如果在每个实例初始化__init__
方法将为每个字段初始化2个属性 - {{1},那么很容易得到我想要的内容还有obj.<attr>
,我需要自己实现它还是有一个可以为我做的django包?
答案 0 :(得分:1)
我认为没有办法可以获得这样的原始值。即使您自己实现伪original_*
字段,您最终也会执行MyModel.objects.get(...)
。
问题是在save()
方法中,对象已被保存。所以你看到了新的价值观。没有查询数据库就无法查看原始值。