Wie füge ich dem Django-Administrator ein Feld zum Benutzermodell hinzu und lasse es im Administrator bearbeiten?

Ich versuche, den Django-Administrator besser zu verstehen, und gleichzeitig versuche ich, dem aktuellen Benutzer-Administrator ein weiteres Feld hinzuzufügen. In models.py habe ich gemacht

User.add_to_class('new_field', models.BooleanField(default=False))

und in admin.py habe ich folgendes (mit Fieldsets, die im Grunde nur aus django / contrib / auth / admin.py kopiert wurden)

class AdjUserAdmin(UserAdmin):
  list_display  = UserAdmin.list_display + ('new_field',)
  list_filter   = UserAdmin.list_filter + ('new_field',)

  fieldsets = UserAdmin.fieldsets
  fieldsets[1][1]['fields'] = ('first_name','last_name','email','new_field')

Das Problem ist, wenn ich das tue, bekomme ich den Fehler:

AdjUserAdmin.fieldsets[4][1]['fields']' refers to field 'new_field' that is missing from the form.

Ich habe mir UserChangeForm angesehen, aber es sieht so aus, als würde es User bereits korrekt als Modell einbeziehen. Ich weiß nicht warumnew_field fehlt im Formular.

Vielen Dank

In Bezug auf diese stinkenden Code

Ich weiß, dass dies eine Methode ist, mit der man stinkende Affen patchen kann, aber Unterklassen geben mir Probleme hauptsächlich fürdiese gründe .. wenn ich es so zum funktionieren bringen könnte, wäre ich glücklich .. und stinke vielleicht.

In Bezug auf den empfohlenen Weg

Mir ist die empfohlene Methode zum Erstellen eines Benutzerprofils bekannt. In bestimmten Situationen ist es jedoch nicht sinnvoll, eine vollständige neue Tabelle zu erstellen und die Datenbank zusätzlich aufzurufen, wenn ich nur ein zusätzliches Profil speichern möchte bisschen Information wieis_private oder so etwas. Wenn ich viel mehr Informationen speichere, stimme ich zu, ein Benutzerprofil einzurichten ist vorzuziehen.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage