Как настроить пользовательскую модель 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
Вы создаете свою пользовательскую модель пользователя (вы уже сделали это)
В
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
.