0
我想在Django 1.7.1中扩展Django用户类,删除名字和姓氏,并在电子邮件地址上添加一个唯一的约束。到目前为止,我有这个自定义模式改变的约束/字段:如何正确扩展Django用户?
class ExtUser(AbstractBaseUser, PermissionsMixin):
class Meta:
# Django 1.7.2?
#default_related_name = 'user'
db_table = 'auth_user'
verbose_name = _('user')
verbose_name_plural = _('users')
abstract = False
username = models.CharField(_('username'), max_length=30, unique=True,
help_text=_('Required. 30 characters or fewer. Letters, digits and '
'@/./+/-/_ only.'),
validators=[
validators.RegexValidator(r'^[\[email protected]+-]+$', _('Enter a valid username.'), 'invalid')
])
email = models.EmailField(_('email address'), max_length=75, blank=False, null=False, unique=True)
is_staff = models.BooleanField(_('staff status'), default=False,
help_text=_('Designates whether the user can log into this admin '
'site.'))
is_active = models.BooleanField(_('active'), default=True,
help_text=_('Designates whether this user should be treated as '
'active. Unselect this instead of deleting accounts.'))
date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
objects = UserManager()
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email']
def get_short_name(self):
return self.username
def email_user(self, subject, message, from_email=None, **kwargs):
send_mail(subject, message, from_email, [self.email], **kwargs)
而且我修改的设置文件:
AUTH_USER_MODEL = 'ext.ExtUser'
我可以登录到admin界面,但是当我尝试编辑用户,我得到以下异常:
ProgrammingError at /api/extuser/1/
column auth_user_groups.extuser_id does not exist
LINE 1: ...oup"."id" = "auth_user_groups"."group_id") WHERE "auth_user...
我想在其他表用户外键是基于类名来形成的......我该如何解决这个问题?我尝试使用模型元类中的default_related_name字段,但这没有任何正面影响。
在此先感谢您的帮助!
亲切的问候, K.
它不需要命名为“用户”。只要您指定设置内部,它仍然可以是“ExtUser”。在您的设置中将AUTH_USER_MODEL设置为your_app.ExtUser。例如:AUTH_USER_MODEL ='my_app.ExtUser' – 2014-11-05 00:49:08