AUTH_USER_MODEL refers to model 'users.CustomUser' that has not been installed

Я пытаюсь создать пользовательскую модель, но чтобы я не делал все равно выдает ошибку:

Traceback (most recent call last):
  File "C:\Python310\lib\site-packages\django\apps\config.py", line 270, in get_model
    return self.models[model_name.lower()]
KeyError: 'customuser'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python310\lib\site-packages\django\contrib\auth\__init__.py", line 170, in get_user_model
    return django_apps.get_model(settings.AUTH_USER_MODEL, require_ready=False)
  File "C:\Python310\lib\site-packages\django\apps\registry.py", line 213, in get_model
    return app_config.get_model(model_name, require_ready=require_ready)
  File "C:\Python310\lib\site-packages\django\apps\config.py", line 272, in get_model
    raise LookupError(
LookupError: App 'users' doesn't have a 'CustomUser' model.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\django_shop\shop\manage.py", line 22, in <module>
    main()
  File "C:\django_shop\shop\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Python310\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "C:\Python310\lib\site-packages\django\core\management\__init__.py", line 420, in execute
    django.setup()
  File "C:\Python310\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Python310\lib\site-packages\django\apps\registry.py", line 116, in populate
    app_config.import_models()
  File "C:\Python310\lib\site-packages\django\apps\config.py", line 304, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Python310\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\django_shop\shop\users\models.py", line 2, in <module>
    from django.contrib.auth.backends import BaseBackend
  File "C:\Python310\lib\site-packages\django\contrib\auth\backends.py", line 5, in <module>
    UserModel = get_user_model()
  File "C:\Python310\lib\site-packages\django\contrib\auth\__init__.py", line 176, in get_user_model
    raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'users.CustomUser' that has not been installed

Моя модель пользователя:

users/models.py

from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
from django.utils.translation import gettext_lazy as _
from django.core.mail import send_mail
from datetime import *


class CustomUserManager(BaseUserManager):
    def create_user(self, username, email, password, **other_fields):
        other_fields.setdefault("is_staff", False)
        other_fields.setdefault("is_superuser", False)
        user = self.model(
            username=username,
            email=self.normalize_email(email),
            **other_fields
        )
        user.set_password = password
        user.save(using=self._db)
        return user

    def create_superuser(self, email, username, password, **other_fields):
        other_fields.setdefault('is_staff', True)
        other_fields.setdefault('is_superuser', True)
        user = self.create_user(
            username=username,
            email=email,
            password=password
            **other_fields
        )
        if other_fields.get("is_staff") is not True:
            raise ValueError("Superuser must have is_staff=True.")
        if other_fields.get("is_superuser") is not True:
            raise ValueError("Superuser must have is_superuser=True.")
        return user


class CustomUser(AbstractBaseUser, PermissionsMixin):
    username = models.CharField(
        verbose_name='Username', db_index=True, max_length=16,
        help_text='Enter your username', unique=True
    )
    first_name = models.CharField(verbose_name='First name', max_length=20, help_text='Enter your name', null=True)
    last_name = models.CharField(verbose_name='Last name', max_length=20, help_text='Enter your surname')
    email = models.EmailField(verbose_name='Email', help_text='Enter your email', unique=True)
    sex = models.CharField(
        verbose_name='Sex', max_length=6,
        choices=[('Female', 'Female'), ('Male', 'Male')], null=True
    )
    password = models.CharField(
        verbose_name='Password', max_length=16,
        help_text='Enter your password'
    )
    date_joined = models.DateTimeField(verbose_name="date joined", default=datetime.now, editable=False)
    is_staff = models.BooleanField(verbose_name='Staff', default=False)
    is_active = models.BooleanField(default=True)
    is_superuser = models.BooleanField(verbose_name='Superuser  ', default=False)
    USERNAME_FIELD = 'email'
    EMAIL_FIELD = 'email'
    REQUIRED_FIELDS = ['username', 'password']
    objects = BaseUserManager()

    class Meta:
        verbose_name = _('user')
        verbose_name_plural = _('users')

    def get_full_name(self):
        return '{0} {1}'.format(self.first_name, self.last_name)

    def short_name(self):
        return self.first_name

    def __str__(self):
        return self.username

    def email_user(self, subject, message, from_email=None, **kwargs):
        send_mail(subject, message, from_email, [self.email], **kwargs)

Админка:

users/admin.py

from django.contrib import admin
from .models import CustomUser


@admin.register(CustomUser)
class AdminUser(admin.ModelAdmin):
    actions_on_bottom = True
    actions_selection_counter = True
    empty_value_display = 'Nothing'
    fields = ['__all__']
    list_display = ['first_name', 'last_name']
    list_filter = ['last_name']
    list_per_page = 10
    search_fields = ['first_name', 'last_name']

Настройки:

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'catalog',
    'payment',
    'users'
]

AUTH_USER_MODEL = 'users.CustomUser'

Я проверял приложение на стороние ошибки, но их не было.

Вернуться на верх