Django 1.8.16 django-allauth 0.27.0 Verwenden Postgres als Datenbank.django allauth empty Benutzername verursacht doppelten Schlüssel in Postgreß DB
Meine Anwendung verwendet keine Benutzernamen, nur E-Mail-Adressen als Benutzer-ID. So verwende ich folgende Einstellungen:
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_VERIFICATION = "mandatory"
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_USER_MODEL_EMAIL_FIELD = 'email'
Nun, wenn ein neuer Benutzer registriert, er Adresse seiner E-Mail verwendet. Aber wenn das Anmeldeformular aus, ich diesen Fehler:
IntegrityError at /accounts/signup/
duplicate key value violates unique constraint "auth_user_username_key"
DETAIL: Key (username)=() already exists.
Request Method: POST
Request URL: http://swd.localhost:8000/accounts/signup/
Django Version: 1.8.16
Exception Type: IntegrityError
Exception Value:
duplicate key value violates unique constraint "auth_user_username_key"
DETAIL: Key (username)=() already exists.
Das sagt genau das, was falsch ist: Der leere Benutzername existiert bereits in der auth_user Tabelle das Feld „Benutzername“, und es scheint dies nicht erlaubt ist? Aber Problem ist, dass das Feld Benutzername ist immer leer mit den obigen Einstellungen. Wie können wir das umgehen?
Ich habe das Benutzermodell nicht angepasst.
In der Datenbank ist das Feld 'Benutzername' als 'eindeutig' gekennzeichnet. Also bedeutet das in der Tat, dass es nicht Null für alle Benutzer sein kann. Ich kann diese 'einzigartige' Einschränkung auf DB-Ebene entfernen, aber es sollte einen saubereren Weg geben, dies zu tun? – Davy
Entfernen auf DB-Ebene scheint nicht einfach und ist nicht das Richtige zu tun. Wie können wir das umgehen? Danke für Ihre Hilfe. – Davy