Django app NameError однако приложение установлено

Я пытаюсь модифицировать встроенную систему аутентификации Django путем добавления пользовательской модели пользователя. Пользовательская модель определена внутри приложения с именем accounts:

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.conf import settings

# Create your models here.

COUNTRIES = settings.COUNTRY_CHOICES

class CustomUser(AbstractUser):
    zip_code = models.PositiveSmallIntegerField(blank=True, null=True)
    city = models.CharField(blank=True, null=True, max_length=64)
    address_street = models.CharField(blank=True, null=True, max_length=64)
    address_number = models.CharField(blank=True, null=True, max_length=32)
    country = models.CharField(blank=True, null=True, choices=COUNTRIES, max_length=8)

Я обновил файл settings.py таким образом:

AUTH_USER_MODEL = "accounts.CustomUser"

Я добавил accounts как установленное приложение:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'accounts',
    'store',
    'cart',
]

Когда я пытаюсь выполнить команду python manage.py makemigrations в терминале, чтобы применить изменения, внесенные в модель пользователя, Django выдает эту ошибку:

Traceback (most recent call last):
  File "C:\Users\uhlar\Dev\ecommerce\manage.py", line 22, in <module>
    main()
  File "C:\Users\uhlar\Dev\ecommerce\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\uhlar\.virtualenvs\ecommerce-vU6zMECh\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line        
    utility.execute()
  File "C:\Users\uhlar\.virtualenvs\ecommerce-vU6zMECh\lib\site-packages\django\core\management\__init__.py", line 386, in execute
    settings.INSTALLED_APPS
  File "C:\Users\uhlar\.virtualenvs\ecommerce-vU6zMECh\lib\site-packages\django\conf\__init__.py", line 87, in __getattr__
    self._setup(name)
  File "C:\Users\uhlar\.virtualenvs\ecommerce-vU6zMECh\lib\site-packages\django\conf\__init__.py", line 74, in _setup
    self._wrapped = Settings(settings_module)
  File "C:\Users\uhlar\.virtualenvs\ecommerce-vU6zMECh\lib\site-packages\django\conf\__init__.py", line 183, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "C:\Users\uhlar\AppData\Local\Programs\Python\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:\Users\uhlar\Dev\ecommerce\config\settings.py", line 149, in <module>
    AUTH_USER_MODEL = accounts.CustomUser
NameError: name 'accounts' is not defined

Ошибка не ограничивается только приложением accounts, независимо от того, внутри какого приложения я пытаюсь определить модель CustomUser, я все равно ее получаю.

Если кто-то знает, в чем причина проблемы, пожалуйста, помогите мне решить ее.

Настройка AUTH_USER_MODEL [Django-doc] должна быть строкой, а не (квалифицированным) именем, поэтому:

# settings.py

# …

#  string literal 🖟                   🖟
AUTH_USER_MODEL = 'accounts.CustomUser'

Как упомянул Виллем, вам нужно обновить настройки AUTH_USER_MODEL внутри settings.py до accounts.CustomerUser модели. Кроме того, вам придется обновить схему вручную, так как при первом запуске миграций Django будет использовать по умолчанию auth.User для множественных внешних ключей и т.д. Смотрите документацию здесь по изменению пользовательского среднего проекта.

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