Как мне слить приложение Django?

У меня есть два приложения Django. A, основное приложение, и B, которое начиналось как отдельное приложение, но на самом деле лучше вписывается в A, как мы позже обнаружили. Я могу переместить весь код из B в A, но не справляюсь с базой данных.

B будет удален, поэтому было бы лучше, если бы миграция полностью выполнялась в A. Таким образом, любой может загрузить последний код и запустить manage.py migrate, и он будет работать на локальных машинах даже после удаления B.

Однако данные по-прежнему необходимо перенести с B на A при выполнении миграции в производственной базе данных.

Мои попытки

Я пробовал встраивать модели B в миграцию, запрашивать их (если они существуют), а затем сохранять новые объекты с использованием новых моделей. Это метод, который я раньше использовал с SQLAlchemy. Единственная проблема заключается в том, что Django затем добавляет эти временные модели в django_contenttype и сообщает мне: «Следующие типы содержимого устарели и должны быть удалены» при следующем запуске миграции. (Я также не знаю, делает ли Django что-нибудь еще, что я мог пропустить.)

Я также попытался установить db_table в таблицу базы данных старого приложения , как предлагается здесь, но тогда таблица не существует при локальном запуске с нуля. Если я включу CreateModel миграцию, тогда я получу django.db.utils.OperationalError: table "b_model" already exists при миграции в существующей базе данных.

Любые идеи?


person Joe    schedule 30.05.2015    source источник
comment
Связанный вопрос помечен как дубликат этого: stackoverflow.com/questions/1258130/. Кажется, есть более надежный способ решения этой проблемы.   -  person Symmetric    schedule 01.11.2016