2013-10-30 1 views
16

Wenn Django-Registrierung nicht unterstützt Django 1.5 und benutzerdefinierte Benutzermodell. Ich versuche Django-Allauth zu verwenden, auf den ersten Blick ist es ein großartiges Produkt.Entfernen Sie 'Benutzername' Feld von Django-Allauth

Problem Ich habe - Benutzername Feld erforderlich, aber in meiner App habe ich keine Benutzernamen. Also, sagt allauth Dokumentation:

**Available settings:** 
ACCOUNT_AUTHENTICATION_METHOD (="username" | "email" | "username_email") 

Gibt die Login-Methode zu verwenden - ob der Benutzer anmeldet durch seinen Benutzernamen eingeben, E-Mail-Adresse oder eines von beiden.

Ok, ich getan, und bekam Fehler:

AssertionError at /accounts/signup/ 
No exception supplied 

models.py:

class MyUser(AbstractBaseUser, PermissionsMixin): 
    title = models.CharField ('Name', max_length=100) 
    email = models.EmailField('Email', max_length=255, unique=True) 
    ... 

settings.py

ACCOUNT_USERNAME_REQUIRED = False 
ACCOUNT_AUTHENTICATION_METHOD = ('email') 
AUTH_USER_MODEL = 'internboard.MyUser' 

Was mache ich falsch?

Antwort

34

Dank, fand ich, richtigen Einstellungen für meine Aufgabe:

ACCOUNT_AUTHENTICATION_METHOD = 'email' 
ACCOUNT_EMAIL_REQUIRED = True 
ACCOUNT_UNIQUE_EMAIL = True 
ACCOUNT_USERNAME_REQUIRED = False 
+1

Hallo Rukomoynikov, Mussten Sie dafür ein eigenes Benutzermodell erstellen? Wenn ja, wie sah es genau aus (wenn Sie bereit sind zu teilen)? – ademartini

+0

Jüngere Ressource aus dem offiziellen Dokument. http://django-allauth.readthedocs.org/en/latest/advanced.html#custom-user-models – attomos

+0

Das einzige Problem mit diesem ist, dass, wenn sich der Benutzer mit facebook anmeldet, sie keinen Benutzernamen in haben das Django-Benutzerkonto –

3

Wenn Sie den Fehler django.core.exceptions.FieldDoesNotExist: Account has no field named 'username' with reference to USER_MODEL_USERNAME_FIELD` im stacktrace begegnen, benötigt die Einstellungen sind die folgenden:

ACCOUNT_USER_MODEL_USERNAME_FIELD = None 
ACCOUNT_EMAIL_REQUIRED = True 
ACCOUNT_USERNAME_REQUIRED = False 
ACCOUNT_AUTHENTICATION_METHOD = 'email'