Django自定义权限没有分配给新创建的用户



这看起来很琐碎,但我不知道我做错了什么。我查看了几篇SO帖子,这些帖子听起来很相似,但问题显然出在其他地方。

我对我的模型can_key拥有自定义权限,并且已正确注册。当我尝试将此权限add添加到新创建的用户时,它不会被添加。

from django.contrib.auth import get_user_model
from django.contrib.auth.models import Permission
def create_dummy_user(self, username):
username = 'dummy_user'
user = get_user_model().objects.create(username=username, password='asdf4321')
user.save()
user = get_user_model().objects.get(username=username)
permission = Permission.objects.get(codename="can_key")
print(permission)

user.user_permissions.add(permission)
user = get_user_model().objects.get(username=username)
print(f"{user.username} is_active - {user.is_active}")
print(f"{user.username} has perm {permission.codename} - {user.has_perm(permission)}")
return user

这是打印输出

test_web | main_app | record case | Can key record case
test_web | dummy_user is_active - True
test_web | dummy_user has perm can_key - False

因此,用户已创建,权限存在/已检索,但未添加权限。为什么?

您应该用字符串更改has_perm((函数的参数。它的格式是";app_name.codname";。所以你更改代码如下

...
print(f"{user.username} has perm {permission.codename} - {user.has_perm('main_app.can_key')}")
...

您应该查看Django的权限缓存文档。点击回答您的问题

最新更新