Django InconsistentMigrationHistory при добавлении начальной миграции приложения
Есть несколько интересных предложений в похожем вопросе, но это не помогает в решении моей проблемы. Кроме того, я использую это приложение в производстве в нескольких странах.
Мы мигрируем приложение и начали с managed=False
на всех моделях. Затем у нас было приложение claim_batch
, которое имеет миграцию 0002_capitationpayment
:
dependencies = [
('product', '__first__'),
('claim_batch', '0001_initial'),
]
# Some models with foreign keys to "product.Product"
В модуле product
нет миграций, но есть модели. Когда я делаю showmigrations
в этой ситуации, я имею:
product
(no migrations)
И это работает нормально.
Проблема в том, что мне нужно добавить миграцию с управляемой таблицей в product
. Когда я делаю makemigrations
и пытаюсь migrate
, я получаю:
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration claim_batch.0002_capitationpayment is applied before its dependency product.0001_initial on database 'default'.
Имеет смысл. Заявление claim_batch.0002 ссылается на миграцию, которая сейчас существует, но не была применена, и не должно быть возможности применить ее после ее зависимости. За исключением этого сценария.
Если я пытаюсь удалить зависимость из уже примененной миграции, я получаю:
ValueError: The field claim_batch.CapitationPayment.product was declared with a lazy reference to 'product.product', but app 'product' isn't installed.
Я предполагаю, что чистая установка с этим будет работать нормально, но у меня есть производственные системы в разных странах, работающие в таком состоянии. Начинать с нуля - не вариант.
Я попытался создать миграцию 0001_initial
для продукта и добавить его в таблицу django_migrations
вручную, затем выдать команду migrate, но это не сработало, он все еще пытался (и не смог) применить миграцию. Возможен ли такой подход?
Я также пытался migrate product
конечно, но он все еще загружает другие приложения и жалуется.
Спасибо за понимание.