用于访问原始实例值的django包

时间:2014-08-10 14:20:30

标签: python django

我想覆盖模型的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包?

1 个答案:

答案 0 :(得分:1)

我认为没有办法可以获得这样的原始值。即使您自己实现伪original_*字段,您最终也会执行MyModel.objects.get(...)

问题是在save()方法中,对象已被保存。所以你看到了新的价值观。没有查询数据库就无法查看原始值。