Я использую пользовательскую модель пользователя Django 1.5s. Я хочу, чтобы пользователь вводил свое имя пользователя и регистрировался. NO PASSWORD (для тестирования в любом случае). Моя модель пользователя не имеет пароля. Но когда я пытаюсь войти в админ я получаю следующее сообщение об ошибке:Django 1.5 Пользовательская модель пользователя неизвестный столбец
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 - я не знаю, почему его пытаются получить их.
Ниже приведен мой код.
Мои Backend (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
MY Модель
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'
'password' является частью' AbstractBaseUser', поэтому его необходимо автоматически добавить в свой 'AuthUser'. Вы успешно выполнили 'syncdb'? – Rohan
Да, но мне удалось = False в мета, поскольку я не хочу, чтобы Django управлял им. Пользователи управляются извне. – Mark
Я считаю, что вам придется добавить это поле в таблицу db. – Rohan