我正在尝试记录要发送到该类实例的creator
的类模型对象的更改。
我创建了一个实用程序方法来区分这两个对象,但是,这不起作用,因为直到稍后才对查询进行求值:
goal = Goal.objects.get(pk=goal_id)
old_obj = goal
goal.description = "Some new string"
goal.save()
这不起作用,因为当我迭代模型类字段时,旧版本的值与更新版本上的值相同。
如何强制评估查询?
有许多不同类型的对象需要这样做,因此提取值的硬编码并不是真正可维护的。
有什么想法吗?
谢谢! :-) 埃里克
答案 0 :(得分:1)
这与懒惰的查询无关,而是Python的赋值语义的简单结果。行old_obj = goal
不会创建goal
对象的副本,它只是将old_obj
指定为指向同一对象的另一个名称。更改其中一个对象的属性将自动意味着另一个对象将看到更改。
这样做的一个简单方法就是向数据库询问另一个副本:
goal = Goal.objects.get(pk=goal_id)
old_obj = Goal.objects.get(pk=goal_id)
现在它们将是两个独立的对象,即使它们指向同一个数据库行,对一个对象的更改也不会影响另一个。
答案 1 :(得分:0)