Django - Не удается войти в систему при создании подкласса Модель пользователя

Я искал похожий вопрос, но пока не нашел.

У меня есть подкласс пользователя (django.contrib.auth.models.User). Я хочу, чтобы мой сайт поддерживал как индивидуальных пользователей, так и бизнес-пользователей, поэтому в этом случае это:

class BusinessUser(User):
    website = models.CharField(max_length=20)
    objects = UserManager()

У меня есть форма регистрации, в которой пользователь сохраняется как пользователь, и еще одна форма, в которой мой пользователь сохраняется как BusinessUser. Проблемным случаем является BusinessUser:

Я проверил через консоль Django, что и пользователь, и объект BusinessUser существуют после регистрации BusinessUser, и все поля в порядке (имя пользователя, адрес электронной почты, пароль).

Однако на моей странице входа я не могу войти с помощью своего BusinessUser'а. Я могу войти в систему нормально с обычным пользователем, зарегистрированным, но не BusinessUser.

Кто-нибудь знает, что может быть не так?

Спасибо.

2 ответа

Решение

Вы подкласс User, Не делай этого никогда. Используйте профили для добавления дополнительных данных, и если вам действительно нужны две отдельные модели (скажем, для двух отдельных представлений для индивидуальных и бизнес-пользователей в администраторе), создайте прокси-модели и настраиваемые менеджеры, которые фильтруют только отдельных или бизнес-пользователей User,

Пользовательский бэкэнд аутентификации должен использоваться, когда у django User подклассы

Вы можете увидеть пример здесь

Я не проверял это, но я верю, что это сработает.

Другие вопросы по тегам