Я пытаюсь использовать наследование модели User в моем приложении django. Модель выглядит так:
from django.contrib.auth.models import User, UserManager
class MyUser(User):
ICQ = models.CharField(max_length=9)
objects = UserManager()
и аутентификация выглядит так:
import sys
from django.db import models
from django.db.models import get_model
from django.conf import settings
from django.contrib.auth.models import User, UserManager
from django.contrib.auth.backends import ModelBackend
from django.core.exceptions import ImproperlyConfigured
class AuthBackend(ModelBackend):
def authenticate(self, email=None, username=None, password=None):
try:
if email:
user = self.user_class.objects.get(email = email)
else:
user = self.user_class.objects.get(username = username)
if user.check_password(password):
return user
except self.user_class.DoesNotExist:
return None
def get_user(self, user_id):
try:
return self.user_class.objects.get(pk=user_id)
except self.user_class.DoesNotExist:
return None
@property
def user_class(self):
if not hasattr(self, '_user_class'):
self._user_class = get_model(*settings.CUSTOM_USER_MODEL.split('.', 2))
if not self._user_class:
raise ImproperlyConfigured('Could not get custom user model')
return self._user_class
Но если я пытаюсь аутентифицироваться - возникает ошибка " Соответствующий запрос MyUser не существует " для self.user_class.objects.get (username = username) вызов. Похоже, что администратор, созданный при базовой синхронизации (я использую sqlite3), сохраняет в User модель вместо MyUser (имя пользователя и пароль верны). Или это что-то другое?
Что я делаю не так? Это пример из http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/