gpt4 book ai didi

python - Django 为什么权限代号与检查是否有权限不同?

转载 作者:太空宇宙 更新时间:2023-11-03 15:51:27 25 4
gpt4 key购买 nike

向我使用的组添加权限时:

managers.permissions.add(
Permission.objects.get(codename='add_user')
)

使用代号add_user

现在,当检查用户是否具有特定权限时,我使用 users.add_user 即。 app_name 前缀

self.assertTrue(self.user.has_perm('users.add_user'))

这是为什么。是否可以通过users.add_user获取权限。

当我尝试时,我得到:

django.contrib.auth.models.DoesNotExist: Permission matching query does not exist.

最佳答案

模型名称不是唯一的。您可以在不同的应用程序中使用另一个 User 模型。在这种情况下,Permission.objects.get(codename='add_user') 将失败并返回 MultipleObjectsReturned。因此使用这样的东西更安全:

Permission.objects.get(codename='add_user', content_type__app_label='users', content_type__model='user')

关于python - Django 为什么权限代号与检查是否有权限不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46560651/

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