django - 以编程方式创建具有权限的 django 组

标签 django permissions

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

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

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

我有:

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?

更新:感谢您提供的答案。我能够用它来计算出我需要的东西。就我而言,我可以执行以下操作:

new_group, created = Group.objects.get_or_create(name='new_group')
proj_add_perm = Permission.objects.get(name='Can add project')
new_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 - 以编程方式创建具有权限的 django 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22250352/

相关文章:

python - 使用 s3boto 的 Django 存储忽略 MEDIA_URL

bash - 为什么我的 setuid root bash shell 脚本不起作用?

java - 授予特定 Java Swing 应用程序完全权限

sql-server - 授予某个数据库中所有存储过程的执行权限

php - 如何为两个用户从目录继承权限到文件

python - 如何访问模板缓存? - Django

django - 如何将 django-filter 与 django-select2 一起使用?

python - Heroku 上的 Django Celery 任务导致内存使用率过高

python - Django 如何传递它的数据库连接

permissions - 监控 AppFabric 缓存