django beste Ansatz für die Erstellung mehrerer Benutzer
Möchte ich mehrere Benutzer erstellen in django. Ich möchte wissen, welche Methode die beste sein wird..
class Teachers(models.Model):
user = models.ForeignKey(User)
is_teacher = models.BooleanField(default=True)
.......
oder sollte ich verwenden..
class Teacher(User):
is_teacher = models.BooleanField(default=True)
.......
oder ich habe die custom-user-Modell...
Das wird gut sein, auf die Erstellung mehrerer Benutzer...??
- Nun, es ist irgendwie sinnlos mit einem Feld namens
is_teacher
wenn das Modell selbst wird alsTeacher
, richtig? Würde es Sinn machen, wenn das Modell hießUser
und dann wollte ein flag zu setzen, für jeden Benutzer-Typ, aber in dem code, den Sie geschrieben, die ein bisschen überflüssig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Django nicht mehrere Benutzer - es hat nur einen Benutzer und dann auf der Grundlage von Berechtigungen können Benutzer verschiedene Dinge tun.
So, um zu beginnen mit - es gibt nur einen Benutzer geben, die in django. Wenn Sie den Standard-Authentifizierungs-framework, das Modell für diesen Benutzer aufgerufen wird
User
vondjango.contrib.auth.models
.Wenn Sie möchten, anpassen von Benutzer-Verhalten in django, es gibt drei Dinge, die Sie tun können:
Anpassen, wie Sie diese authentifizieren. Standardmäßig erfolgt die Authentifizierung mit Hilfe einer Datenbank, wo die Passwörter gespeichert sind. Sie authentifizieren kann facebook/google usw. gegen oder mit Ihrem bestehenden Benutzer-Datenbank, beispielsweise mit Active-Directory, wenn Sie auf einem Windows-Netzwerk.
Erstellen Sie benutzerdefinierte Berechtigungen, und basierend auf diesen die Berechtigungen beschränken, welche Funktionen die Benutzer ausführen können. Standardmäßig auf jedem Modell - django fügen Sie grundlegende Berechtigungen "kann Bearbeiten", "löschen", "Lesen können". Sie können Ihre eigenen erstellen und dann prüfen, ob der Benutzer diese bestimmte Berechtigungen.
Können Sie speichern zusätzliche Informationen über den Benutzer, zusammen mit dem, was normal gespeichert ist, die von django. Es gibt zwei Möglichkeiten, dies zu tun, je nachdem, wie viel Anpassung Sie brauchen. Wenn alles django bietet standardmäßig arbeitet für Sie, und alles, was Sie tun möchten, ist das zusätzliche speichern Informationen über den Benutzer können Sie erweitern des user-Modell - in früheren Versionen hiess dieses das erstellen einer benutzerdefinierten Profil. Die andere option, die Sie haben, um erstellen Sie Ihre eigenen
User
- Modell, wenn Sie wollen tiefere Anpassung. Die häufigste Verwendung einer benutzerdefinierten Modell ist, wenn Sie verwenden möchten Sie eine E-Mail-Adresse als Benutzernamen ein.Sie nicht zu tun haben, alle drei, in der Tat manchmal alles, was Sie tun möchten, laden ein paar zusätzliche Informationen oder haben Sie authentifizieren sich mit Ihrer E-Mail-Adresse, in einigen Anwendungen, die Sie ändern müssen alle drei stellen.
In Ihrem Fall, da alles, was Sie tun möchten, speichern zusätzliche Informationen über einen Benutzer, die Sie benötigen würden, um erweitern des user-Modell, indem Sie ein Modell erstellen, dass Verweise
User
(Hinweis: Sie müssen nicht Erben ausUser
):Einen Ansatz war ich nach mit Django 1.7 (funktioniert mit 1.6 auch) um eine Unterklasse
AbstractUser
Verwenden Sie Ihr Modell, die Sie brauchen, um es zu sein, der für die Authentifizierung verwendet in
settings.py
:Beachten Sie auch, dass Sie jetzt haben, zu nutzen
settings.AUTH_USER_MODEL
bei der ReferenzierungIhre neue
User
Modell in eine Beziehung ein, in Ihre Modelle.ForeignKey
Beziehung.AbstractUser
stattUser
.