Verwenden von Django auth UserAdmin für ein benutzerdefiniertes Benutzermodell
Aus der Django.Contrib.Auth docs:
Erweitern Django - default User
Wenn Sie ganz glücklich mit Django - User-Modell und Sie möchten nur hinzufügen, dass einige zusätzliche Profil-Informationen, können Sie einfach die Unterklassedjango.contrib.auth.models.AbstractUser
und fügen Sie Ihre benutzerdefinierte Profil-Felder. Diese Klasse stellt die vollständige Umsetzung der Standard-Benutzer als ein abstraktes Modell.
Gesagt und getan. Ich erstellte ein neues Modell wie folgt:
class MyUser(AbstractUser):
some_extra_data = models.CharField(max_length=100, blank=True)
Dies zeigt sich in der admin-fast wie Django ' s standard User
. Aber der wichtigste Unterschied ist, dass im admin-Kennwort(re)set-Feld ist nicht vorhanden, aber eine normale CharField stattdessen angezeigt. Muss ich wirklich überschreiben Sachen in der admin-config, um diese zu arbeiten? Wenn ja, wie kann ich tun, dass in der etwas TROCKENEN Art und Weise (also ohne kopieren von Sachen aus dem Django-source - ... eww...)?
InformationsquelleAutor der Frage nip3o | 2013-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach dem Graben um den Django-source-code für eine Weile, fand ich eine Arbeit soultion nutzen. Ich bin nicht ganz glücklich mit dieser Lösung, aber es scheint zu funktionieren. Fühlen Sie sich frei, um Ihnen eine bessere-Lösungen!
Django verwendet
UserAdmin
zum Rendern der nette admin suchenUser
Modell. Nur mit Hilfe dieser in unseremadmin.py
-Datei, können wir die gleichen look für unser Modell.Aber dies allein wird wahrscheinlich keine gute Lösung, da Django-Admin wird nicht angezeigt, alle Ihre Spezialgebiete. Es gibt zwei Gründe für dieses:
UserAdmin
verwendetUserChangeForm
wie das Formular verwendet werden, wenn das verändern des Objekts, die in seine turn verwendetUser
als Modell.UserAdmin
definiert eineformsets
-Eigenschaft, später durchUserChangeForm
die nicht Ihr Fachgebiet.So, ich habe eine Besondere Veränderung-form, die überlastung der Meta-innere-Klasse, so dass die änderung Formular verwendet, das richtige Modell. Ich hatte auch eine überlastung
UserAdmin
meine Besondere Felder, um das fieldset, das ist der Teil, der diese Lösung missfällt mir ein wenig, da sieht es ein bisschen hässlich. Fühlen Sie sich frei, um Verbesserungen vorschlagen!InformationsquelleAutor der Antwort nip3o
nico ' s Antwort war sehr hilfreich, aber ich fand Django noch Verweise die User-Modell, wenn Sie einen neuen Benutzer zu erstellen.
Ticket #19353 Referenzen dieses problem.
Um es zu beheben musste ich ein paar mehr Ergänzungen
admin.py
admin.py:
InformationsquelleAutor der Antwort kdh454
Eine einfachere Lösung, admin.py:
Django wird korrekt Referenz-MyUser-Modell für die Erstellung und Anpassung.
Ich bin mit Django 1.6.2.
InformationsquelleAutor der Antwort cesc
cesc ' s Antwort war nicht für mich arbeiten, wenn ich versuchte, fügen Sie ein benutzerdefiniertes Feld, um das Formular erstellen. Vielleicht ist es geändert, seit der 1.6.2? So oder so, fand ich hinzufügen das Feld zu beiden fieldsets und add_fieldsets hat den trick.
InformationsquelleAutor der Antwort aidnani8