Как исправить ошибку InconsistentMigrationHistory при попытке применить миграцию для собственной модели пользователя?
Пытаюсь сделать REST аутентификацию по вот этой статье. Создал модель пользователя, сделал makemigrations и пытаюсь накатить созданную миграцию, но выдает ошибку:
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency authentication.0001_initial on database 'default'.
Перед этим я применял только базовые миграции которые есть в Django. Что теперь делать? Как это исправить?
Ответы (1 шт):
Добавление своей модели для пользователя в существующий проект, крайне нетривиальная задача. Всегда имеет смысл добавлять свою модель пользователя в проект с самого начала, даже если она полностью совпадает с моделью по умолчанию.
Таблица для модели пользователя должна создаваться до таблиц из зависимых приложений, а значит и миграция, у которой такая таблица создается должна запускаться раньше. Сейчас ошибка возникает потому, что в БД уже существуют таблицы, для моделей (в данном случае из приложения admin), которые зависят от моделей из приложения, в котом находится модель пользователя. Это значит, что вы уже запускали (стандартные) миграции, до того как создали свою модель пользователя и миграцию для нее.
Если вы можете себе позволить пересоздать БД (т.е. у вас проект еще не запущен в проде с реальными данными), то стоит так и сделать. Просто удаляете БД, и создаете ее с нуля как обычно. В этом случае, сначала запустится ваша миграция для модели пользователя, а потом зависимые.
Если же у вас уже есть данные, которые нельзя терять, то вам нужна процедура, подробное описание которой есть тут https://www.caktusgroup.com/blog/2019/04/26/how-switch-custom-django-user-model-mid-project/