2013-10-30 7 views
16

Quando la registrazione di django non supporta django 1.5 e il modello utente personalizzato. Sto cercando di usare django-allauth, dal primo sguardo è un ottimo prodotto.Rimuovi il campo "nome utente" da django-allauth

Problema che ho - campo nome utente richiesto, ma nella mia app non ho nome utente. Così, allauth documentazione dice:

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

Specifica il metodo di login da usare - se l'utente esegue il login inserendo il proprio nome utente, indirizzo e-mail, o con uno dei due.

Ok, ho fatto, e ha ricevuto l'errore:

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' 

Cosa sto facendo di sbagliato?

risposta

34

Grazie, ho trovato, impostazioni corrette per il mio compito:

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

Hi Rukomoynikov, hai dovuto creare il tuo modello utente per farlo funzionare? In caso affermativo, che aspetto ha esattamente (se sei disposto a condividere)? – ademartini

+0

Risorsa più recente da doc ufficiale. http://django-allauth.readthedocs.org/en/latest/advanced.html#custom-user-models – attomos

+0

L'unico problema con questo è che se l'utente si iscrive con facebook, non ha un nome utente in l'account utente Django. –

3

Se si verifica l'errore di USER_MODEL_USERNAME_FIELD` django.core.exceptions.FieldDoesNotExist: Account has no field named 'username' with reference to nel stacktrace, le impostazioni necessarie sono le seguenti:

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