Перемещение моделей Django между "приложениями" - легко и быстро
В Django-проекте моей компании наши модели в настоящее время разбросаны примерно по 20 папкам "app" без особых причин. Мы хотели бы объединить их в одно новое приложение (вместе с остальным кодом), чтобы в будущем мы могли рефакторить все части нашей системы по своему усмотрению, не беспокоясь о нарушении границ "app".
Из-за того, как работает Django, простое перемещение модели ломает все. Я потратил часы, читая все, что мог, о различных предлагаемых решениях этой проблемы, и лучшей статьей была:
https://realpython.com/move-django-model/
Пока что я не доволен ни одним из решений, которые мне попадались. Все они слишком обременительны.
Если я сделаю следующее:
- Переместите все модели в новое приложение. (Назовем его "newapp".) .
- Обновите все ссылки в коде на предыдущие места. (Включая файлы миграции.) .
- Отключите сайт на минуту.
- Запустите скрипт для переименования всех таблиц базы данных с
someprevapp_model
наnewapp_model
. - Запустите сценарий для обновления
app_label
для всех строк в таблицеdjango_content_type
. - Разверните последнюю версию кодовой базы, с обновленными расположениями моделей и ссылками.
- Включите сайт снова.
У меня получилось, или я что-то упустил?