Angenommen, Sie haben eine Anwendung, in der verschiedene Arten von Benutzern signieren können: Firmen, Anwälte und Kunden. Eine Firma hat viele Anwälte; Ein Anwalt hat viele Kunden. Die Ansichten für einen festen Benutzer unterscheiden sich natürlich von den Ansichten eines Rechtsanwaltsanwenders; Die beiden unterscheiden sich vom Client-Benutzer.Modellierung von Konten für verschiedene Arten von Benutzern in Django
Wie würden Sie die drei verschiedenen Benutzer modellieren? Ich kann den folgenden Ansatz denken:
Drei verschiedene Modelle mit einem ForeignKey
zu User
, jede mit ihren eigenen Feldern, zum Beispiel:
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)
Jetzt können Sie erstellen zum Beispiel Konsultationen als eigenständiges Modell mit zwei ForeignKeys
: bis Lawyer
und Client
; Sie können auch Ressourcen zu einer Beratung hinzufügen (wie Dokumente oder ähnliches), indem Sie ein Modell Resource
mit einer ForeignKey
bis Consultation
erstellen.
Dieser Ansatz macht es schwierig, unter den Nutzern zu unterscheiden: Wie Sie wissen, ob ein user
sind ein Firm
, zum Beispiel - Sie die Datenbank mehrmals abgefragt werden müssen oder ein Profile
den Ober User
Objekt zuordnen.
Sie auch nur ein Profile
zum User
hinzufügen könnte und umfassen eine Role
, und dann leiten Sie die Ansichten und Authentifizierung basierend auf user.get_profile().role
.
Wie würden Sie mit diesem Problem umgehen?
Ja, ich denke, ich muss damit gehen. Vielen Dank! (Gute Idee über die Dekorateure) – Escualo