2014-03-07 26 views
14

在管理控制檯中,我可以添加組並添加一組與我的模型相關的權限,例如,在Django中,如何以編程方式創建具有權限的組

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

如何以編程方式執行此操作。我找不到有關如何做到這一點的任何信息。

我:

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:謝謝你提供了答案。我能夠用它來計算出我需要的東西。就我而言,我可以做到以下幾點:下面的代碼

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) 
+1

你的意思是'new_group.permissions.add(proj_add_perm)' – CpILL

回答

16

使用註冊通過管理您的組,然後生成與他們的UPDATE夾具

https://code.djangoproject.com/wiki/Fixtures

+3

在哪個文件中我放這段代碼? –

+1

'/ yourapp/management/commands/anything.py',確保包含'management/__ init __。py'和'commands/__ init __。py',以便加載。 – JREAM

3

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) 
相關問題