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?

Respuestas a la pregunta(3)

Su respuesta a la pregunta