Bevor jemand diese Frage als Duplikat dieser Frage markiert, Kann djangos auth_user.username varchar (75) sein? Wie kann das gemacht werden? oder andere Fragen zu SO, bitte lies diese Frage. Die Frage, mit der ich mich verbunden habe, stellt diese Frage genau, aber die Antworten gehen leider nicht auf die gestellte Frage ein.
Kann ich das Feld auth_user.username auf 100 Zeichen ändern, indem ich Folgendes tue:
username = models.CharField(_('username'), max_length=30, unique=True, help_text=_("Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"))
Dass dies kaputt geht, wenn ich Django auf eine höhere Version aktualisiere, ist kein Problem. Ich suche auch keine anderen Authentifizierungsmethoden. Ich möchte nur wissen, ob ich etwas kaputt machen würde, wenn ich das machen würde.
Sie müssen die maximale Länge an mehreren Stellen monkey-patchen: die Beschreibung des Modellfelds, die Beschreibung des Formularfelds und die Maximallängenvalidatoren. Max-Länge-Validatoren sind sowohl an Formularfelder als auch an Modellfelder angehängt.
Hier ist ein Code-Snippet, das alles patchen wird:
Ссылка (getestet mit Django 1.2 und 1.3)
Aktualisierung: Gute Nachrichten! Seit django 1.5 können Sie das Benutzermodell überschreiben: Anpassen des Benutzermodells
Es ist kein Schaden dabei. Ändern Sie einfach die Länge im Modell und in der Datenbank:)
Erstellen Sie ein Benutzerprofilmodell, fügen Sie Ihr Feld für sehr lange Benutzernamen hinzu und verwenden Sie es. Natürlich macht dies das echte Benutzername-Feld nutzlos, aber es ist viel besser als das Hacken von Django-Code, der Sie in Schwierigkeiten bringt, wenn Sie es upgraden müssen.
Für mich funktioniert der folgende Code und ist einfach gut.
%Vor%nachdem Sie Ihre Migration ausführen können
Für zukünftige Bedürfnisse ist dies der beste und einfachste Weg, den ich herausgefunden habe:
Eine andere Lösung besteht darin, Ihren Authentifizierungscode zu ändern. Wenn sich ein neuer Benutzer anmeldet, gibt er eine E-Mail ein, die Sie im E-Mail-Feld speichern. Wenn Ihre E-Mail-Adresse 30 Zeichen lang ist, kürzen Sie sie, bevor Sie sie in das Benutzerfeld eingeben. Ändern Sie dann Ihre Anmeldeauthentifizierung für neue Anmeldungen.
Tags und Links django django-authentication