En Django Admin, estoy desarrollando un administrador de permisos que consiste en:
Permisos - Rol - Grupo - Usuarios
- Puede agrupar usuarios para asignar roles a grupos.
- Un grupo puede tener múltiples roles.
- Los roles están compuestos de diferentes permisos.
Hasta ahora, mis modelos se ven así (he creado mis propios permisos, pero no se muestran aquí):
class UserGroup(models.Model):
"""
A group encompasses different users.
A group can have multiple roles.
"""
name = models.CharField(max_length=15, blank=False)
user = models.ForeignKey(User)
class Role(models.Model):
"""
A role is composed of permissions.
The roles are applied to user groups.
"""
name = models.CharField(max_length=15, blank=False)
group = models.ManyToManyField(UserGroup)
class Permission(models.Model):
"""
Permissions that are applied to roles.
"""
role = models.ManyToManyField(Role)
# ...
Como esta es la primera vez que trabajo con permisos / roles, quiero saber si es una buena aproximación o cuáles son sus puntos débiles.
¿Debo crear modelos / tablas intermedias?
Respuestas
0 para la respuesta № 1Django tiene un sistema de autenticación con permisos.
https://docs.djangoproject.com/en/1.9/topics/auth/default/
luego, para un mejor sistema de permisos en el nivel de objeto, puede usar django-guardian https://github.com/django-guardian/django-guardian o aplicación similar