2012-09-12 18 views
29

Devo implementare i diritti utente per i gruppi di utenti (molto simile ai gruppi di Facebook). Ad esempio, ciascun gruppo può avere membri con diritti come: can_post, can_delete, can_ban, ecc. Naturalmente, un utente può essere membro di molti gruppi e il gruppo può avere molti utenti diversi con diritti diversi. Quali modelli ho bisogno per questa funzionalità?Gruppi di utenti e permessi

risposta

59

Django ha un sistema integrato di gruppi. Ogni volta che hai una domanda del genere, ti consiglio di utilizzare lo searching the Django docs, che è esauriente, utile e ben scritto.

Fintanto che si utilizza l'app django.contrib.auth, è possibile accedere ai gruppi. È quindi possibile assegnare autorizzazioni a tali gruppi.

from django.contrib.auth.models import User, Group, Permission 
from django.contrib.contenttypes.models import ContentType 

content_type = ContentType.objects.get(app_label='myapp', model='BlogPost') 
permission = Permission.objects.create(codename='can_publish', 
             name='Can Publish Posts', 
             content_type=content_type) 
user = User.objects.get(username='duke_nukem') 
group = Group.objects.get(name='wizard') 
group.permissions.add(permission) 
user.groups.add(group) 
+4

in quale file di solito si inserisce questo pezzo di codice? –

+0

Il codice sopra crea record, quindi è il tipo di cosa che si esegue dalla shell. Se si desidera distribuire l'app o distribuirla, è necessario configurarla in modo che i dati iniziali siano stati salvati. Credo che tu possa modificarli anche all'interno dell'amministratore sul sito web. –

+0

stessa cosa che ho fatto con la mia, l'ho fatto su shell o admin e poi ho generato una fixture da caricare su istanze future dell'applicazione. Grazie per la risposta –