更改后获取Django模型实例字段值

时间:2012-02-03 19:17:52

标签: django django-models

让我们考虑以下几点:

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

我现在如何获得之前的值“foo”? 我不想再次选择或复制先前的更改。还有其他想法吗?也许有一个地方可以进行这些改变。

1 个答案:

答案 0 :(得分: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"