我发现相关对象的delete()
不会立即删除它。在我的情况下,Vader
实例通过序列化程序的instance
方法的update
参数。
如何立即删除v.son
?
class Vader(models.Model):
pass
class Luke(models.Model):
dad = models.OneToOneField(Vader, related_name='son')
>>> v = Vader()
>>> hasattr(v, 'son')
False
>>> l = Luke(dad=v)
>>> l.save()
>>> hasattr(v, 'son')
True
>>> v.son
<Luke: Luke object>
>>> v.son.delete()
>>> hasattr(v, 'son')
True
>>> v.son
<Luke: Luke object>
答案 0 :(得分:3)
数据库中的删除会立即执行,但不会反映在已加载的模型实例中。这通常不是问题,因为django像HTTP一样工作 - 请求进来,一些处理发生,然后状态丢失。
您可以强制模型从数据库重新加载以查看更改:
v.refresh_from_db()