2015-10-30 11 views
9

Ich habe einige Frage In einem Projekt, das ich die Notwendigkeit der Arbeit mit Benutzern haben, die aus drei sind (mehr kann) Arten von ihnen unterschiedliche Rollen haben: Arzt Patient AdministratorArbeiten mit Benutzerrollen in Django

Ich habe über die Verwendung der Django-Modell-Benutzer gedacht und erweitern es erstellen ein Benutzerprofilmodell ... Aber ich ignoriere, wie die verschiedenen Rollen zu verwalten, weil das Benutzerprofilmodell Felder des Benutzermodells haben, obwohl ich nicht weiß wie man das Rollen-Thema anspricht.

1 Benutzer haben viele userprofiles möglicherweise? Ich weiß nicht

Oder möglicherweise werde ich ein Rollenmodell/Tabelle erstellen, wo ich die Rollentypen angeben und eine Beziehung mit dem Benutzermodell erstellen. Dies ist eine gute Möglichkeit.

Eine andere Möglichkeit (wie ein Kommentar weiter unten) ist das Django-Berechtigungssystem zu überprüfen, in dem ich Benutzergruppen erstellen und diesen Gruppen Berechtigungen zuweisen kann, obwohl ich hier nur wirklich Modelle bearbeiten, erstellen und löschen kann?

Ich bin ein paar verwirren über, wie dieses Thema anzusprechen

suche ich diese App gefunden. https://github.com/dabapps/django-user-roles

Wenn mich jemand darüber orientieren kann, werde ich sehr dankbar Mit freundlichen Grüßen

+0

** django- Benutzerrollen ** wurde vor 4 Jahren erstellt und wird nicht aktualisiert. Es sieht so aus, als ob es für Django 1.3 gemacht wurde. Ich würde es nicht empfehlen. –

+0

Es ist wahr Andrés. Ich erwäge derzeit andere Optionen, zwischen denen die Anpassung des Modellanwenders gehört. Danke für die Klarstellung – bgarcial

+1

Mein Vergnügen! Ich würde dies auch berücksichtigen: https://docs.djangoproject.com/en/1.8/topics/auth/default/#permissions-and-authorization –

Antwort

11

Sie könnten wahrscheinlich dies mit Djangos in permissions

gebaut an der Arbeit, die mehr sein kann, als Sie aber brauchen . Eine einfache Lösung wäre nur mit einem OneToOneField Ihres Benutzer ein Userprofil Modell mit einer Rolle Feld sein:

class UserProfile(models.Model): 
    user = models.OneToOneField(User, related_name="profile") 
    role = models.CharField() 

die Rollen einstellen und tut Kontrollen mit den Rollen in Ihren Ansichten:

user.profile.role = "physician" 
user.profile.save() 

if user.profile.role == "physician": 
    #do physician case here 
+0

Hallo @sponrad Ich habe erforscht, und ein UserProfile-Modell wird im Allgemeinen verwendet um dem Benutzermodell zusätzliche Informationen oder zusätzliche Attribute hinzuzufügen, ohne dass ich das Benutzermodell modifizieren muss ... Zum Beispiel ein Avatarbild zu einem Benutzer hinzufügen ... Unter dieser Annahme unterscheidet sich UserProfile von UserRole, wenn wir von Modellen sprechen oder Datenstrukturen. Sind Sie damit einverstanden? Ich denke, dass ich ein UserRole-Modell erstellen kann und ich kann sagen, dass ein User viele UserRoles hat ... zum Beispiel ... – bgarcial

+0

Andere Alternative ist das Berechtigungssystem in Django zu studieren (du hast mich oben erwähnt) und ich kann die Möglichkeit sehen Erstellen Sie Gruppen und weisen Sie ihnen Berechtigungen oder Berechtigungen zu und weisen Sie sie den Benutzern zu. Jede Gruppe kann eine Rolle sein? Es ist möglich. – bgarcial

+0

Der Name "UserProfile" ist beliebig, die Tabelle repräsentiert alle Informationen, die Sie an einen Benutzer gebunden haben möchten, egal ob Profilbild, Geburtstag, Rolle oder was auch immer. – sponrad

Verwandte Themen