在Django中,您如何以编程方式创建具有权限的组 [英] In Django, how do you programmatically create a group with permissions

查看:107
本文介绍了在Django中,您如何以编程方式创建具有权限的组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在管理控制台中,我可以添加一个组,并添加一些与我的模型相关的权限,例如

In the Admin console, I can add a group and add a bunch of permissions that relate to my models, e.g.

api | project | Can add project
api | project | Can change project
api | project | Can delete project

我如何以编程方式执行此操作。我没有找到任何有关如何做的信息。

How can I do this programmatically. I can't find any information out there on how to do this.

我有:

from django.contrib.auth.models import Group, Permissions
from django.contrib.contenttypes.models import ContentType
from api.models import Project
new_group, created = Group.objects.get_or_create(name='new_group')
# Code to add permission to group ???
ct = ContentType.objects.get_for_model(Project)
# Now what - Say I want to add 'Can add project' permission to new_group?

更新:感谢您提供的答案。我能用这个来解决我需要的东西。在我的情况下,我可以执行以下操作:

UPDATE: Thanks for the answer you provided. I was able to use that to work out what I needed. In my case, I can do the following:

new_group, created = Group.objects.get_or_create(name='new_group')
proj_add_perm = Permission.objects.get(name='Can add project')
group.permissions.add(proj_add_perm)


推荐答案

使用以下代码

from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
from api.models import Project
new_group, created = Group.objects.get_or_create(name='new_group')
# Code to add permission to group ???
ct = ContentType.objects.get_for_model(Project)

# Now what - Say I want to add 'Can add project' permission to new_group?
permission = Permission.objects.create(codename='can_add_project',
                                   name='Can add project',
                                   content_type=ct)
new_group.permissions.add(permission)

这篇关于在Django中,您如何以编程方式创建具有权限的组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆