django-registration 1.0 ora supporta i modelli utente personalizzati django 1.5. La documentazione django-registrazione ha solo la seguente voce FAQ su di esso:Sottoclassi forme django-registration 1.0 per modelli utente personalizzati django 1.5
sto usando Django 1.5 e un modello utente personalizzata; come faccio a fare quel lavoro?
Anche se i due backend incorporati forniti con django-registrazione sia assumono il modello utente predefinito di Django, la base classi di visualizzazione sono volutamente user-model-agnostic. È sufficiente creare sottoclasse di e implementare la logica per il modello utente personalizzato.
Non sono sicuro di quali viste ho bisogno per creare una sottoclasse e cosa dovrebbero esserci. Ho anche notato che lo ProfileManager
nella registrazione di django assume ancora un campo di nome utente separato.
Nel mio caso specifico, ho rimosso il campo 'username', ha aggiunto una 'display_name', e ha reso il campo di identificazione 'e-mail':
class MyUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(
verbose_name="Email Address",
max_length=384,
unique=True,
db_index=True,)
display_name = models.CharField(max_length=128, blank=True)
date_joined = models.DateTimeField(default=timezone.now)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = MyUserManager()
USERNAME_FIELD = 'email'
def get_full_name(self):
return self.email
def get_short_name(self):
return self.email
def __unicode__(self):
return self.email
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
return True
@property
def is_staff(self):
return self.is_admin
Senza sottoclassi tutte le classi django-registrazione, i il rendering predefinito del modulo di registrazione richiama i campi da User
anziché da MyUser
.
Ho visto il seguente thread SO django-registration app and Django 1.5 custom user model, ma non è stato di aiuto.
Aggiornamento
ho notato che registrationform è codificata con un campo 'nome utente'. Le FAQ menzionano solo la sottoclasse del backend, quindi non sono sicuro di quale sia l'intenzione qui. Dovrei sottoclasse anche il modulo?
Si prega di dare un'occhiata a questo impegno - https://bitbucket.org/LinnTroll/django-registration-1.5/commits/c71d5b8e273551cffdfc7869545430e3 !! È necessario eseguire la sottoclasse di 'DefaultBackend',' RegistrationFormFromUserModel' e 'RegistrationManager' per questo. – pankaj28843
Hai modificato AUTH_USER_MODEL nel nuovo modello utente personalizzato in settings.py? – Wei
Cosa hai finito? Sto pensando solo a gestirlo, ma a definire esplicitamente i campi nel modulo di registrazione invece di usare semplicemente il tag del modello 'form'. Non ideale, ma penso che potrebbe essere l'opzione più semplice. – bnjmn