RE: [Django-es] perfiles y permisos

212 views
Skip to first unread message

Ricardo Daniel Quiroga

unread,
Feb 7, 2015, 1:52:30 PM2/7/15
to djan...@googlegroups.com
Mmm creo que la clase user no se debe extender sino armar una relación unoauno con otro modelo al menos eso decía en la doc de django cuando leí el tema. crea grupos y asignales permisos a los grupos después solo agrega los usuarios al grupo. Saludos

De: marcelo meza
Enviado: 07/02/2015 12:39
Para: djan...@googlegroups.com
Asunto: [Django-es] perfiles y permisos

Hola
estoy desarrollando una aplicación en django en la cual necesito diferentes tipos de perfiles, cada uno con permisos distintos y basados en modelos distintos, es para un colegio y necesito perfiles de profesor, alumno, apoderado y director.
Lo primero que hice fue extender el modelo de user a otro llamado perfil para agregar mas datos (fecha de nacimiento, rut, etc), todo bien hasta ahí, todos los perfiles comparten estos datos.
El problema surge cuando quiero agregar mas datos a los diferentes perfiles, el perfil alumno parte de los datos que ya tiene el modelo perfil (y que a su vez se extiende del modelo user), pero se le agregan otros datos que solo tiene el modelo alumno, ademas de esto el alumno tiene diferentes permisos que los demás usuarios.
lo mismo para profesor y director.
¿Que debería hacer?
¿Acaso puedo extender nuevamente el modelo perfil y agregarle mas datos y permisos en otro modelo?
¿debería crear un grupo y asignarle ahí los permisos?y si fuera este el caso, ¿hay forma de crear el grupo en los modelos y no en el administrador de django?
¿o debería extender desde user un modelo para alumno, otro para profesor y para director y rebundar los datos que comparte cada perfil?
*otra cosa que se me olvidaba, se puede dar el caso de que un usuario sea alumno y profesor, o profesor y apoderado, es decir, que tenga mas de un tipo de usuario.

--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Nekmo

unread,
Feb 7, 2015, 4:03:50 PM2/7/15
to djan...@googlegroups.com
Creo recordar que al heredar de User, por defecto lo que crea una o2o,
así que no debería haber problemas.

Un cordial saludo:
-- Nekmo.

Sitio web: http://nekmo.com
Dirección de contacto: cont...@nekmo.com
XMPP/Jabber: cont...@nekmo.com
Identi.ca: http://identi.ca/nekmo
Diaspora: Nekmo
Google+: Nekmo Com


El día 7 de febrero de 2015, 19:59, Ricardo Daniel Quiroga
<l2rada...@gmail.com> escribió:

marcelo meza

unread,
Feb 9, 2015, 11:44:01 PM2/9/15
to djan...@googlegroups.com
¿ya y en ese caso, como se crea un grupo desde models?
seria ineficiente hacerlo desde el panel ya que el perfil de cada grupo necesita tener mas parámetros

carlos

unread,
Feb 10, 2015, 12:52:51 AM2/10/15
to djan...@googlegroups.com
Hola, Marcelo ya haz probado con alguna de estas aplicaciones talves te sirvan




mira si te ayudan en lo que pretendes realizar

saludos

marcelo meza

unread,
Feb 18, 2015, 1:47:13 AM2/18/15
to djan...@googlegroups.com
Gracias Carlos
Me demore porque estuve probando las 3 aplicaciones y aparentemente django-guardian me soluciona el problema de los permisos, aunque aun me queda la duda de los perfiles.
Necesito crear 3 perfiles con atributos distintos
Entonces, ¿se pueden crear 3 modelos de perfiles distintos y que cada uno tenga la relación uno a uno con el modelo User?
¿Y si esto fuera incorrecto, como debería proceder?

Matias Rs

unread,
Feb 18, 2015, 9:09:50 AM2/18/15
to djan...@googlegroups.com
Buenas!
En tu caso, lo que haria yo, seria extender el modelo user con los atributos que tengan en comun alumno, profesor etc. y desp crear un modelo para cada perfil relacionandolo con User.

carlos

unread,
Feb 18, 2015, 1:13:12 PM2/18/15
to djan...@googlegroups.com
Marcelo, si podrias crear un usuario abstracto con los atributos mas comunes que poseean 
todos y luego creas tus perfiles y los asocias a estos usuarios algo asi

class UserComun(AbstractBaseUser):
    #campos en comun de todos los usuarios
    ....

class UserProfileAlumno(models.Model):

    usuario = models.OneToOneField(UserComun)
    # Other fields here
    avatarEspecial = ImageField(upload_to=get_file_path,null=True, blank=True)
    fk(algo solo para el alumno)
    ...

y asi seria con el de los otros perfiles mira si te funciona de esa manera


saludos

marcelo meza

unread,
Feb 18, 2015, 4:37:06 PM2/18/15
to djan...@googlegroups.com
Según la documentación la clase AbstractBaseUser sólo contiene la funcionalidad de autenticación, pero no hay campos reales, hay que suministrarlos todos. la clase AbstractUser es un modelo de usuario completo en cuanto campos, una clase abstracta para que se pueda heredar de ella y agregar mis propios campos y métodos de perfil.
Intentare con esta alternativa y les cuento que tal
Reply all
Reply to author
Forward
0 new messages