Supongamos que tiene una aplicación donde diferentes tipos de usuarios pueden firmar: Firmas, abogados y clientes. Una firma tiene muchos abogados; un abogado tiene muchos clientes. Las opiniones para un usuario firme son, por supuesto, diferentes de las opiniones de un usuario de abogado; los dos son diferentes del usuario del cliente.Cuentas de modelado para diferentes tipos de usuarios en Django
¿Cómo modelizarías a los tres usuarios diferentes? No puedo pensar en el siguiente enfoque:
tres modelos diferentes con una ForeignKey
a User
, cada uno con sus propios campos, por ejemplo:
class Firm(models.Model):
user = models.ForeignKey(User)
class Lawyer(models.Model):
user = models.ForeignKey(User)
specialty = models.CharField(max_length=100)
class Client(models.Model)
user = modelsForeignKey(User)
Ahora puede crear, por ejemplo, las consultas como un modelo separado utilizando dos ForeignKeys
: a Lawyer
y a Client
; también puede agregar recursos a una consulta (como documentos, o cosas por el estilo) creando un modelo Resource
con un ForeignKey
a Consultation
.
Este enfoque hace que sea difícil distinguir entre los usuarios: ¿cómo saber si un user
es una Firm
, por ejemplo - que necesita para consultar las bases de datos varias veces o asignar un Profile
a la User
objeto genérico.
También puede agregar sólo un Profile
a la User
e incluyen un Role
, y luego se canalizan los puntos de vista y la autenticación basada en user.get_profile().role
.
¿Cómo lidiarías con este problema?
Sí, creo que tendré que ir con esto. ¡Gracias! (Buena idea sobre los decoradores) – Escualo