Configurando dos tipos diferentes de Usuarios en Django 1.5 / 1.6
Tenga en cuenta que esta es una versión actualizada demi pregunta original sobre este tema, pero merece ser preguntado nuevamente con el cambio en la forma en que Django trata con los usuarios y la autenticación.
Estoy trabajando en un sitio web con dos tipos de usuarios muy diferentes, llamémoslosCustomers
yStore Owners
. Ambos se registran en el sitio, pero tienen una funcionalidad muy diferente.Customers
simplemente tiene un perfil único y puede comprar entre las tiendas que les gustan.Store Owners
tener una sola cuenta, pero puede tener acceso a múltiples tiendas, y cada tienda puede tener múltiplesStore Owners
.
Los detalles exactos de los modelos no importan, pero los dos tipos de usuarios requieren campos muy diferentes. Los modelos idealmente se verían así:
Customer
email (username)
password
name
address
time_zone
preferred_shipping
favorite_stores (many-to-many field)
...
Store Owner
email (username)
password
name
balance
stores_owned (many-to-many field on Stores)
stores_managed (many-to-many field on Stores)
...
Originalmente, cuando Django tenía un pobre soporte de usuario personalizado, tuve unUserProfile
clase con algunos campos adicionales con unaOneToOne
enUser
, y luego adicionalCustomer
yStoreOwner
clases que fueronOneToOne
enUserProfile
. Esto no funcionó muy bien.
Dados los cambios en Django 1.5 / 1.6, estoy tratando de encontrar la mejor manera de estructurar esto. En este momento, tengo lo siguiente:
class CustomerUser(AbstractBaseUser):
...
class StoreOwnerUser(AbstractBaseUser):
...
Pero como habría dos tipos de usuarios, no puedo configurarAUTH_USER_MODEL
a solo uno de ellos.
¿Cuál es la mejor manera de estructurar esto para que pueda tener dos tipos diferentes de usuarios con diferentes campos, sin que me cause ningún problema en la autenticación del usuario, la creación del usuario o el administrador?
Además, ¿cómo podré saber solo desde el inicio de sesión si este usuario es unCustomerUser
o unStoreOwnerUser
?