Django 1.5自定义用户模型未知列

时间:2013-08-08 11:50:34

标签: django django-authentication

我正在使用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'

1 个答案:

答案 0 :(得分:0)

passwordAbstractBaseUser的一部分,因此应将其添加到您的AuthUser模型中以及表格中。

如果您拥有此模型的managed=False,则需要明确添加。