@3FANG

Как перейти на пользовательскую модель User в середине проекта?

Заменил стандартную модель User на свою:
#task_manager.users.models.py
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    """Переопределенная модель пользователя."""

    def __str__(self) -> str:
        return self.get_full_name()

Изменил AUTH_USER_MODEL:
#task_manager.settings.py
...
AUTH_USER_MODEL = 'users.User'

В проекте использовал django.contrib.auth.get_user_model() поэтому в коде ничего больше изменять (как я думал) не пришлось. Проект запустился, но при создании и изменении уже существующих моделей работал некорректно, вернее, выбрасывал ошибку (кто бы мог подумать).

Начал гуглить, понял, что нельзя просто так заменить одну модель на другую (удивительно, правда?). В документации ссылаются на этот вопрос - #25313.
Указал db_table для модели. Удалил вручную файлы миграции из проекта. Но при попытке создать новые миграции командой django-admin makemessages ловлю ошибку -
django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

Пробовал вызывать settings.configure(), ошибка не сильно меняется. Поставил DJANGO_SETTINGS_MODULE="task_manager.settings" командой export, так он мне начал говорить, что приложения task_manager не существует. Попробовал еще удалить файлы кэша - find . -path "*/migrations/*.pyc" -delete, не помогло.
Выручите.
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
django-admin makemessages
это не про миграции

Начал гуглить, понял, что нельзя просто так заменить одну модель на другую (удивительно, правда?).
если бы ты знал SQL, то не удивлялся бы, а понимал бы проблему

Короче нужно многое делать руками, а для новичков, проще всего заново пересоздать базу. А чтобы на следующих проектах было легко переходить, в самом начале нужно выполнить https://docs.djangoproject.com/en/5.0/topics/auth/...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы