Django - 如何在组上添加多个权限?

发布于 2025-01-09 05:08:41 字数 250 浏览 1 评论 0原文

我有一个权限列表

list = ['view', 'add', 'edit']

列表中的权限已保存在我的表中。

我首先清除该组以前的权限,以便可以插入新权限

group = Group.objects.get(name='Group1')
group.permissions.clear()

有没有办法以编程方式将权限列表添加到 Group1?

I have a list of permissions

list = ['view', 'add', 'edit']

The permissions inside the list are already saved on my table.

I first clear the group's previous permission so I can insert a new one

group = Group.objects.get(name='Group1')
group.permissions.clear()

Is there a way to add the list of permission to Group1 programmatically?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒解孤独 2025-01-16 05:08:41

假设您有一个名为 blog 的应用和一个名为 BlogPost 的模型,并且想要添加权限 viewchange、< code>add 将该模型添加到名为 Blogger 的组中,您应该能够执行以下操作:

from django.contrib.auth.models import Group, Permission

codenames = ['view_blogpost', 'change_blogpost', 'add_blogpost']

group = Group.objects.filter(name='Blogger').first()
permissions = Permission.objects.filter(content_type__app_label='blog', codename__in=codenames)
for permission in permissions.all():
    group.permissions.add(permission)

注意:检查 app_label 可能不是必需的,但是它确保您不会为模型添加权限来自另一个应用程序的 BlogPost(如果存在)。

查看数据库中的表 auth_permissiondjango_content_type 中的字段和可能的值。

Say you have an app named blog and a model named BlogPost and want to add permissions view, change, add for that model to the group named Blogger, you should be able to do:

from django.contrib.auth.models import Group, Permission

codenames = ['view_blogpost', 'change_blogpost', 'add_blogpost']

group = Group.objects.filter(name='Blogger').first()
permissions = Permission.objects.filter(content_type__app_label='blog', codename__in=codenames)
for permission in permissions.all():
    group.permissions.add(permission)

Note: The check for the app_label is probably not necessary, but it ensures that you do not add permissions for a model BlogPost from another app, if one exists.

Have a look at tables auth_permission and django_content_type in your db for the fields and possible values.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文