Наилучшая практика для нескольких бэкэндов аутентификации в Django? - PullRequest
1 голос
/ 13 ноября 2010

Я пытаюсь внедрить систему аутентификации для двух разных групп пользователей в Django. Студент (используя свое имя пользователя и пароль), Разработчик (используя свой адрес электронной почты и пароль). В настоящее время у меня есть (общая) модель UserProfile, которой поделится Студент, Разработчик. Вот мой код модели:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    name = models.CharField(max_length=50, null=True, blank=True)
    slug = models.SlugField(max_length=50, db_index=True, unique=True)#this will be used as his unique url identifier
    objects = UserProfileManager()

    class Meta:
        abstract = True

class Student(UserProfile):
     ''' some student specific fields might go here '''

class Developer(UserProfile):
    ''' some developer specific fields might go here '''

А в settings.py я дал:

AUTH_PROFILE_MODULE = 'users.UserProfile'

Я получаю аутентификацию, работая только с моделью UserProfile. Но как только я представил Студента, Разработчик все облажался. Я получаю

UserProfile не имеет атрибута 'DoesNotExist'

(это из метода UserProfileManager существует), а также

SiteProfileNotAvailable

ошибка. (Я получаю эти ошибки еще до того, как начал писать бэкэнд аутентификации электронной почты.). Я что-то пропустил? Каков наилучший путь для достижения того, чего я хотел.

1 Ответ

0 голосов
/ 26 ноября 2010

Возможно, проблема в абстрактном определении UserProfile. Все должно работать, когда вы оставляете «abstract = True». Но знайте, как это меняет схему вашей таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...