如何属性删除对象(立即)

时间:2016-06-17 16:45:57

标签: django django-models

我发现相关对象的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>

1 个答案:

答案 0 :(得分:3)

数据库中的删除会立即执行,但不会反映在已加载的模型实例中。这通常不是问题,因为django像HTTP一样工作 - 请求进来,一些处理发生,然后状态丢失。

您可以强制模型从数据库重新加载以查看更改:

v.refresh_from_db()