2012-02-03 111 views
0

让我们考虑以下几点:获取Django模型实例字段值

a = Model.objects.get(pk=1) 
a.name # foo 
a.name = "bar" 
a.name # bar 

如何我现在得到了以前的“foo”值? 我不想再次选择或复制之前的更改。任何其他想法?也许有一个地方,这些变化举行。

+1

正如@YujiTomita几乎完全忽略了你的两个规定:;)你*不想做的两种方式是完成你想做的事情的唯一两种方式。 – 2012-02-03 19:28:59

+0

@ChrisPratt - 这是一个很好的观点......我没有注意到这两个规定!糟糕! – 2012-02-03 20:24:02

回答

1

您可以查询数据库再次(Model.objects.get(pk=1).name

或者你存储在某些属性模型的状态。这是经常做检测的变化。

class MyModel(models.Model): 
    def __init__(self, *args, **kwargs): 
     super(MyModel, self).__init__(*args, **kwargs) 
     self._initial = self.__dict__ 

a = MyModel.objects.get(pk=1) 
a.name = "bar" 
a._initial['name'] == "foo" 
相关问题