如何在django save模型方法中获取对象的先前数据

时间:2013-08-27 05:45:56

标签: django django-models

假设我们有一个对象myobj,其中包含字段f1f2。 最初,这些字段设置为12并保存为pk=1

现在,我再次称它为:

myobj.f1 = 11
myobj.f2 = 22
myobj.save()

虽然模型方法是save(self, *args, **kwargs) 我知道,我们可以将自己的变量传递给它,覆盖方法,做我们想做的事情。

无论如何,我们可以知道对象的先前数据吗?使用一些内置参数?

1 个答案:

答案 0 :(得分:3)

save()方法中没有任何内置方法可以获取旧数据。您将不得不查询数据库。 像这样:

class MyModel(Model):
   ...
   def save(self, *args, **kwargs):
       if self.pk:
          old_obj = MyModel.objects.get(pk=self.pk)

       #use old_obj for something

       ...