2014-03-07 13 views
14

In der Admin-Konsole kann ich eine Gruppe hinzufügen und eine Reihe von Berechtigungen hinzufügen, die sich auf meine Modelle, z.In Django, wie programmgesteuert erstellen Sie eine Gruppe mit Berechtigungen

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

Wie kann ich dies programmgesteuert tun. Ich kann keine Informationen darüber finden, wie das geht.

ich habe:

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: Vielen Dank für die Antwort, die Sie zur Verfügung gestellt. Ich konnte damit herausfinden, was ich brauchte. In meinem Fall kann ich folgendes tun:

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

für das UPDATE Du meinst 'new_group.permissions.add (proj_add_perm)' – CpILL

Antwort

16

Verwenden Sie den folgenden Code

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

In welcher Datei habe ich diesen Code eingefügt? –

+1

'/ yourapp/management/commands/anything.py', stelle sicher, dass' management/__ init __. Py' und 'commands/__ init __. Py' enthalten sind, damit es geladen wird. – JREAM

Verwandte Themen