我正在使用Django 1.5s自定义用户模型。我想让用户输入他们的用户名 - 并登录。没有密码(无论如何都要进行测试)。我的用户模型没有密码。但是当我尝试登录管理员时,我收到以下错误:
OperationalError(1054, "Unknown column 'hrms.password' in 'field list'"
似乎是尝试在authenticate()方法中执行此查询。
SELECT `myusers`.`password`, `myusers`.`last_login`, `myusers`.`id`, `myusers`.`user`, `myusers`.`name`, `myusers`.`firstname`, `myusers`.`lastname`, `myusers`.`organisation`, `myusers`.`unit`, `myusers`.`grade`, `myusers`.`email`, `myusers`.`position`, `myusers`.`manager` FROM `myusers` WHERE `myusers`.`user` = 'warrenm' "
我没有字段密码,last_login - 我不知道它为什么试图获取它们。
以下是我的代码。
我的后端(auth.py)
from epmds.application.models import AuthUser
class MyBackend(object):
def get_user(self, user_id):
# get a user from the user_id
try:
return AuthUser.objects.get(pk=user_id)
except AuthUser.DoesNotExist:
return None
def authenticate(self, username=None, password=None):
# check the username/password and return a user
user = AuthUser.objects.get(user=username)
return user
我的模特
class AuthUser(AbstractBaseUser):
id = models.CharField(primary_key=True, max_length=15)
user = models.CharField('username', max_length=20, unique=True)
name = models.CharField(max_length=100)
firstname = models.CharField(max_length=100)
lastname = models.CharField(max_length=100)
organisation = models.CharField(max_length=100)
email = models.CharField(max_length=50, blank=True, null=True)
USERNAME_FIELD = 'user'
def get_full_name(self):
full_name = '%s %s' % (self.first_name, self.last_name)
return full_name.strip()
def get_short_name(self):
return self.first_name
class Meta:
ordering = ('lastname', 'firstname')
managed = False
db_table = 'myusers'
答案 0 :(得分:0)
password
是AbstractBaseUser
的一部分,因此应将其添加到您的AuthUser
模型中以及表格中。
如果您拥有此模型的managed=False
,则需要明确添加。