Python Django:Object';s许多添加/删除函数更新数据库,但不更新对象

Python Django:Object';s许多添加/删除函数更新数据库,但不更新对象,python,django,Python,Django,在我正在使用的代码中,我有各种各样的关系。设置基本上如下所示: 因此,在shell中使用此设置,我得到: >>> Account.objects.all() [<Account: Account name:"Account 1">] >>> Role.objects.all() [<Role: Role name:"Role 1">, <Role: Role name:"Role 2">] >>> a =

在我正在使用的代码中,我有各种各样的关系。设置基本上如下所示:

因此,在shell中使用此设置,我得到:

>>> Account.objects.all()
[<Account: Account name:"Account 1">]
>>> Role.objects.all()
[<Role: Role name:"Role 1">, <Role: Role name:"Role 2">]
>>> a = Account.objects.get(name='Account 1')
>>> a.roles.all()
[<Role: Role name:"Role 1">]
>>> r = Role.object.get(name='Role 2')
>>> r.accounts.all()
[]
>>> a.roles.add(r)
>>> a.roles.all()
[<Role: Role name:"Role 1">]
>>> r.accounts.all()
[]
>Account.objects.all()
[,看起来这种行为不应该发生


当我试图在另一个项目上复制此行为时,我无法做到这一点,因此我猜测该项目是以某种方式设置的。是否存在导致此行为的变量、库或其他原因?

Django尝试最小化它执行的数据库查询量,因为这可能是一个严重的性能瓶颈。在本例中case可能
r.accounts.all()
被缓存了?但django文档认为它不应该被缓存。
>>> Account.objects.all()
[<Account: Account name:"Account 1">]
>>> Role.objects.all()
[<Role: Role name:"Role 1">, <Role: Role name:"Role 2">]
>>> a = Account.objects.get(name='Account 1')
>>> a.roles.all()
[<Role: Role name:"Role 1">]
>>> r = Role.object.get(name='Role 2')
>>> r.accounts.all()
[]
>>> a.roles.add(r)
>>> a.roles.all()
[<Role: Role name:"Role 1">]
>>> r.accounts.all()
[]
>>> a = Account.objects.get(name='Account 1')
>>> a.roles.all()
[<Role: Role name:"Role 1">, <Role: Role name:"Role 2">]
>>> r = Role.object.get(name='Role 2')
>>> r.accounts.all()
[<Account: Account name:"Account 1">]