我有一个简单的模型关系:
class Foo(models.Model):
bar = models.OneToOneField(Bar)
说我要执行以下操作:
>>> bar = Bar.objects.create()
>>> foo = Foo.objects.create(bar=bar)
>>> Foo.objects.all().delete()
>>> bar.foo is None
False
这是可以预期的,因为bar
仍在引用foo
对象。但是现在,当我尝试从数据库中获取bar
的新副本时,即没有相关的foo
时,我尝试了:
>>> bar.refresh_from_db()
>>> bar.foo is None
False
为什么foo
不以None
的形式返回?我看到在docs中,它表示使用refresh_from_db()
时仅从数据库中重新加载了模型的字段。在这种情况下,foo
是否不算作bar
的字段?
答案 0 :(得分:1)
您使用的是哪个Django版本?
当关系对象未更改其ID时,早期版本的Django并未清除缓存。有他们的门票https://code.djangoproject.com/ticket/29076。
它已经在新版本的Django中修复。