我发现用户无法从group获取权限。为此,我必须再次获取用户实例。
我使用 Python 3.4.3 和 Django 1.8
以下是我使用控制台的代码:
>>> from django.contrib.auth.models import User
>>> from django.contrib.auth.models import Group
>>> from django.contrib.auth.models import Permission
>>> peter = User.objects.create_user('peter', 'peter@example.com', 'peter')
>>> permission = Permission.objects.get(codename='add_user')
>>> admin = Group(name='admin')
>>> admin.save()
>>> admin.permissions.add(permission)
>>> peter.get_all_permissions()
set()
>>> peter.groups.add(admin)
>>> peter.get_all_permissions()
set()
>>> peter = User.objects.get(username='peter')
>>> peter.get_all_permissions()
{'auth.add_user'}
我想知道为什么,有没有办法刷新群组的权限?
答案 0 :(得分:1)
create_user
将用户模型保存到数据库并返回相同的模型。如果您更改了该用户的权限,则更改将反映在数据库中,但不会反映在您在shell中的缓存模型中。您必须从数据库中重新获取用户才能显示这些权限更改。
refresh_from_db
无法工作的原因是它只从数据库重新加载模型的直接字段,而不是其他依赖于数据库的值。