gpt4 book ai didi

Django 无法立即获得组的许可

转载 作者:行者123 更新时间:2023-12-04 12:47:18 24 4
gpt4 key购买 nike

我发现该用户无法从组中获得权限。为此,我必须再次获取用户实例。

我用 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'}

我想知道为什么,有什么方法可以刷新组的权限?

最佳答案

create_user将用户模型保存到数据库并返回相同的模型。如果您更改该用户的权限,则更改会反射(reflect)在数据库中,但不会反射(reflect)在您的 shell 中的缓存模型中。您必须从数据库中重新获取用户才能使这些权限更改显而易见。

原因refresh_from_db不起作用的是它只从数据库重新加载模型的直接字段,而不是其他依赖于数据库的值。

关于Django 无法立即获得组的许可,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35432147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com