2012-09-12 25 views
29

Necesito implementar derechos de usuario para grupos de usuarios (bastante similar a los grupos de Facebook). Por ejemplo, cada grupo puede tener miembros con derechos como: can_post, can_delete, can_ban, etc. Por supuesto, un usuario puede ser miembro de muchos grupos y el grupo puede tener muchos usuarios diferentes con diferentes derechos. ¿Qué modelos necesito para esta funcionalidad?Grupos de usuarios y permisos

Respuesta

59

Django tiene un sistema integrado en grupos. Cada vez que tenga una pregunta como esta, recomiendo searching the Django docs, que son extensos, útiles y están bien escritos.

Siempre que use la aplicación django.contrib.auth, tiene acceso a grupos. A continuación, puede asignar permisos a esos grupos.

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

en que archivo usualmente pone este fragmento de código? –

+0

El código anterior crea registros, por lo que es el tipo de cosa que ejecutaría desde dentro del shell. Si desea distribuir su aplicación o implementarla, deberá configurarla para que se guarden estos datos iniciales. Creo que también puede modificarlos dentro del administrador en el sitio web. –

+0

Lo mismo que hice con el mío, hice eso en shell o admin y luego generé un accesorio para cargar en futuras instancias de la aplicación. Gracias por la respuesta –

Cuestiones relacionadas