Kann ich das USERNAME_FIELD in Django 1.5 ändern, ohne einen benutzerdefinierten Benutzer zu erstellen?

9

Ich versuche, das E-Mail-Feld im Standard-Django-Benutzermodell als Benutzernamen zu verwenden. Ich benutze Django 1.5 und ich sah, dass der Standardbenutzer eine USERNAME_FIELD -Eigenschaft hat.

In meinem Projekt möchte ich das folgende USERNAME_FIELD = 'email' als Standard im Benutzermodell festlegen.

Diese kleine, aber grundlegende Optimierung ist die einzige Sache, die ich im Benutzermodell ändern möchte. Ich habe mich gefragt, ob es eine Möglichkeit gibt, die USERNAME_FIELD zu ändern, ohne den AbstractUser zu unterklassen. Ich habe in diese Frage gesehen, dass Sie die AbstractUser ableiten und einen benutzerdefinierten Manager dafür schreiben können.

Also habe ich mich gefragt, ob es eine einfachere Möglichkeit gibt, diese Eigenschaft zu ändern?

Und wenn nicht, was wäre die minimale Art, das AbstractUser so zu erweitern, dass das E-Mail-Feld als Benutzername verwendet wird?

    
yellowcap 27.03.2013, 19:50
quelle

2 Antworten

4
%Vor%     
Thomas 28.03.2013, 12:19
quelle
1

Sie müssen eine neue benutzerdefinierte Benutzerklasse schreiben, indem Sie den AbstractBaseUser und nicht AbstractUser

erweitern

Deklarieren Sie dort Ihre E-Mail als USERNAME_FIELD

Optional können Sie auch einen benutzerdefinierten Benutzermanager deklarieren, der sich von BaseUserManager aus erstreckt, um die Einschränkung für Benutzername erforderlich zu behandeln. Sie können den Benutzernamen aus der create_user-Funktion dieses Managers entfernen

    
Snigdha Batra 16.07.2014 13:25
quelle