是否可以从数据库刷新django对象的状态?我的意思是行为大致等同于:
new_self = self.__class__.objects.get(pk=self.pk)
for each field of the record:
setattr(self, field, getattr(new_self, field))
更新:在跟踪器中找到了重新打开/固定补丁之战:http ://code.djangoproject.com/ticket/901 。仍然不明白为什么维护者不喜欢这个。
这似乎是不必要的功能。可以只从数据库中重新查找对象。
—
斯蒂芬,2010年
这是不合适的,因为Django模型对象是代理。如果将同一表行分为两个对象-x1 = X.objects.get(id = 1); x2 = X.objects.get(id = 1),它们将被测试为相等,但是它们是不同的对象,并且不共享状态。您可以分别更改和保存它们-最后保存的一个决定数据库中行的状态。因此,通过简单的分配-x1 = X.objects.get(id = 1)重新加载是正确的。拥有一个重载方法会导致许多人错误地推断x1.f ='new value'; (x1.f == x2.f)为True。
—
Paul Whipp 2014年
commmit
。完成此操作后,您将不得不等待下一个SQL事务提交。为什么这样 您要等多久才能进行下一笔交易?