Si supponga di avere un'applicazione in cui diversi tipi di utenti possono firmare: aziende, avvocati e clienti. Una ditta ha molti avvocati; un avvocato ha molti clienti. Le opinioni per un utente fisso sono, ovviamente, diverse dalle opinioni di un utente avvocato; i due sono diversi da quelli dell'utente.Modellazione di account per diversi tipi di utenti in Django
Come modellerebbero i tre diversi utenti? Mi viene in mente il seguente approccio:
Tre modelli differenti con un ForeignKey
a User
, ognuno con i propri campi, come ad esempio:
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)
Ora è possibile creare, per esempio, le consultazioni come un modello separato utilizzando due ForeignKeys
: a Lawyer
e a Client
; puoi anche aggiungere risorse a una consultazione (come documenti o cose del genere) creando un modello Resource
con un ForeignKey
a Consultation
.
Questo approccio rende difficile distinguere tra gli utenti: come fai a sapere se un user
è un Firm
, per esempio - è necessario interrogare il database più volte o assegnare un Profile
al User
oggetto generico.
Si potrebbe anche aggiungere solo Profile
al User
e includono un Role
, e poi trasmettere le opinioni e l'autenticazione basata su user.get_profile().role
.
Come affronteresti questo problema?
Sì, penso che dovrò andare con questo. Grazie! (Buona idea dei decoratori) – Escualo