[pyar] [Django] User Profile vs User Inheritance

Daniel Moisset dmoisset en machinalis.com
Sab Ene 21 14:25:47 ART 2012


2012/1/21 Ariel Camino <arielcamino en gmail.com>:
> Hola gente, tengo una consulta relacionada con el diseño de una aplicación.
>
> Tengo dos tipos de usuarios, que deben tener atributos diferentes,
> comportamientos diferentes, y se relacionan con elementos diferentes. Un
> usuario de un tipo, nunca es al mismo tiempo usuario del "otro tipo", es
> decir son como dos roles completamente diferentes.
>
> (...)
>
> Buscando un poco me encontré con esta página que explica como hacerlo
> heredando de User:
>
> http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/
>

Yo he visto varias veces gente intentando usar el esquema ese que se
propone ahi, y tiende a ser problematico. Si bien tocar el
authentication backend para que fabrique otro tipo de objeto parece
resolver el problema de "el framework me devuelve un User() y no un
MiUsuarioLoco()", en realidad el problema de estar instanciando la
clase que no crresponde te va a aparecer en un monton de lados, en
particular en cada aplicacion de terceros que de algun modo se vincule
con el modelo User. Los problemas tipicos que he visto son funciones
donde al final no sabes si estas recibiendo una instancia del user de
django o de tu usuario customizado. Y ademas que otras apps que
reciben el usuario customizado a veces se van a romper a menos que tu
clase se cuide muy bien de poder sustituir a un
django.contrib.auth.User().

Lo que yo te sugiero es seguir el esquema que sale en la documentación
de django... y si queres, podes hacer dos modelos que hereden de tu
clase UserProfile, con lo cual tenes lo mejor de ambos mundos.

Saludos,
   D.



More information about the pyar mailing list