0

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

1 回答 1

0

password是其中的一部分,AbstractBaseUser因此它也应该添加到您的AuthUser模型中以及表中。

正如您managed=False对这个模型所做的那样,您需要明确地添加它。

于 2013-08-08T12:34:20.083 回答