我升级的应用程序,我对1.4.5的Django Django的到1.5和刚刚完成迁移到一个自定义的用户模型。 当我登录到我的应用程序,用我自己的认证形式,用我的超级用户凭证(创建时做manage.py syncdb
)一切工作正常。
我能得到验证,如果我去/admin
,我已经登录,符合市场预期。 我能够浏览和完美的使用管理控制台。 但是,如果我尝试登录到从管理面板/admin
,使用Django管理登录表单,我得到的错误:
请输入一个员工帐户的正确电子邮件和密码。 两个地方都要注意大小写。
我做了一些调查,并认为它可能有一些做ModelAdmin
,所以我跟着这个例子从文档和创建一个自定义ModelAdmin
。 然而,问题依然存在。
任何想法可能是造成这个?
你加在下面几行到您create_superuser
函数,它是下BaseUserManager
? 这可能是这样的:
class CustomUserManager(BaseUserManager):
def create_user(self, username, email, password=None):
if not username:
raise ValueError('Dude you need a username.')
if not email:
raise ValueError(
'type an e-mail..')
new_user = self.model(
username=username,
email=CustomUserManager.normalize_email(email))
new_user.set_password(password)
new_user.save(using=self._db)
return new_user
def create_superuser(self, username, email, password):
new = self.create_user(
username,
email,
password=password
)
new.is_active = True
new.is_staff = True
new.is_superuser = True
new.save(using=self._db)
return new
专注于:
new.is_active = True
new.is_staff = True
new.is_superuser = True
我有同样的问题,但我发现@阿利克斯的回答如此有益。 我忘了添加is_active=True on create_superuser()
def create_staffuser(self, email, first_name=None, last_name=None, user_role=None, password=None):
user = self.create_user(
email,
first_name=first_name,
last_name=last_name,
user_role=user_role,
password=password,
is_staff=True,
is_active=True
)
return user
所以基本上你需要把重点放在IS_ACTIVE和检查
# changes the in-build User model to ours (Custom)
AUTH_USER_MODEL = 'accounts.User'
AUTHENTICATION_BACKENDS = (
# Needed to login by custom User model, regardless of `allauth`
"django.contrib.auth.backends.ModelBackend",
# `allauth` specific authentication methods, such as login by e-mail
"allauth.account.auth_backends.AuthenticationBackend",
)