django-registration 1.0 теперь поддерживает пользовательские модели django 1.5. Документация Джанго регистрации только имеет следующий FAQ пункт о нем:Подкласс django-registration 1.0 формы для пользовательских моделей django 1.5
Я использую Django 1.5 и заказная модель пользователя; как я могу это сделать?
Хотя два встроенных движков, поставляемых с Джанго регистрации и предположим, по умолчанию модель User Джанго, базовая классы представлений сознательно пользователем модель агностик. Просто подкласс их и реализуйте логику для пользовательской модели пользователя.
Я не уверен, какие представления мне нужны для подкласса и что им нужно делать. Я также заметил, что ProfileManager
в django-registration все еще принимает отдельное поле имени пользователя.
В моем конкретном случае, я удалил поле «имя пользователя», добавил «DISPLAY_NAME», и сделал «электронная почта» идентифицирующее поле:
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
Без подклассов любых Джанго-регистрации классов, По умолчанию рендеринг формы регистрации тянет в полях от User
вместо MyUser
.
Я видел следующую нить SO django-registration app and Django 1.5 custom user model, но это не помогло.
Update
Я заметил, что RegistrationForm жестко закодировано с полем 'Имя пользователя'. В FAQ часто упоминается подклассу бэкэнда, поэтому я не уверен, что это за намерение. Должен ли я также подклассифицировать форму?
Пожалуйста, посмотрите на это обязательство - https://bitbucket.org/LinnTroll/django-registration-1.5/commits/c71d5b8e273551cffdfc7869545430e3 !! Для этого вам необходимо подклассы 'DefaultBackend',' RegistrationFormFromUserModel', а также 'RegistrationManager'. – pankaj28843
Вы изменили AUTH_USER_MODEL на новую пользовательскую модель в settings.py? – Wei
Что вы делаете? Я думаю о том, чтобы просто обрабатывать это, но явно определяя поля в регистрационной форме, а не просто использовать тег шаблона 'form'. Не идеально, но я думаю, что это может быть самый простой вариант. – bnjmn