AUTH_USER_MODEL ссылается на модель «base.User», которая не была установлена ​​для пользовательского аутентификационного бэкэнда. - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь настроить auth backend при настройке модели auth, но продолжаю сталкиваться с этой ошибкой, потому что я использую функцию get_user_model().

django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL относится к модели «base.User», которая не была установлена ​​

INSTALLED_APPS = [
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'base.apps.BaseConfig',
     'core.apps.AccountsConfig',
     'system.apps.SystemConfig',
]

пользовательский бэкэнд:

class UserBackend(object):
    def authenticate(self, request, username=None, password=None, **kwargs):
        usermodel = User
        try:
            usr = usermodel.objects.get(username=username)
            password_valid = usr.check_password(password)
            if usr and password_valid:
                return usr
            raise PermissionDenied
        except usermodel.DoesNotExist:
            return PermissionDenied
        return None

    def get_user(self, user_id):
        usermodel = User
        try:
            return usermodel.objects.get(pk=user_id)
        except usermodel.DoesNotExist:
            return None

Edit:

Параметры:

AUTH_USER_MODEL = 'base.User'
AUTHENTICATION_BACKENDS = (
'base.models.UserBackend',
)

base.User модель:

class User(AbstractUser):
    fullname = models.CharField(max_length=35, null=True, blank=True)
    picture = models.ManyToManyField('ImageFile', verbose_name="ProfilePicture", blank=True)
    bio = models.CharField(max_length=255, null=True, blank=True)
    link = models.URLField(null=True, blank=True, default="")
    is_private = models.BooleanField(default=False)
    is_official = models.BooleanField(default=False)

Примечание: UserBackend находится в конце файла, а class User(AbstractUser) над ним

1 Ответ

0 голосов
/ 27 марта 2019

Произошел импорт в файл base.models, from django.contrib.auth.backends import ModelBackend, который вызвал эту ошибку, даже когда я удалил пользовательский AUTHENTICATION_BACKENDS. После того, как я удалил этот импорт, все работает нормально, хотя я переместил бэкэнд-класс из base.models в backend файл в приложении base (я думаю, что в этом нет необходимости, я просто сделал это для более читаемых кодов)

...