Как настроить пользовательскую модель auth в Django, чтобы она имела UUID (БД Postgres)

Я использую Python 3.9 и Django 3.2. Вот моя структура папок

+ cbapp
    - settings.py
    + models
        - __init__.py
        - custom_user.py
- manage.py

Вот как выглядит мой файл customer_user.py

$ cat models/custom_user.py
import uuid

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


class CustomUser(AbstractUser):
    pass
    uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

Дополнительно я настроил это в файле settings.py

AUTH_USER_MODEL = 'models.CustomUser'

Однако, когда я запускаю "python manage.py makemigrations", я получаю эту ошибку

django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'models.CustomUser' that has not been installed

Я понятия не имею, что это значит. У меня есть это в файле settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'cbapp',
]
...
AUTH_USER_MODEL = 'models.CustomUser'

Согласно Django doc, для замены пользовательской модели User

  1. Вы создаете свою пользовательскую модель пользователя (вы уже сделали это)

  2. В settings.py, укажите AUTH_USER_MODEL на нее (модель, которую вы создали выше) следующим образом:

     AUTH_USER_MODEL = 'myapp.MyUser'
    

    Ваша ошибка здесь : вместо AUTH_USER_MODEL = 'models.CustomUser' пишите AUTH_USER_MODEL = 'cbapp.CustomUser'

NB : Не указывайте ваш файл модели, а ваш app_name затем model_name.

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