Как я могу переместить модели Django в другое приложение django? Я не уверен, что опция migrage --fake может сработать для меня, так как мне нужно рассмотреть 2 случая

При перемещении моделей из одного приложения django в другое я использовал подход, рекомендованный в этом вопросе: Перемещение нескольких моделей из одного приложения django в другое

class Post(models.Model):
    title = models.CharField(max_length=120)

    class Meta:
        db_table = 'blog_post'

Однако в моем случае у меня также есть несколько моделей, которые необходимо перенести, помимо тех, которые я переношу в другое приложение.

Поскольку я хочу, чтобы некоторые таблицы оставались нетронутыми (те, которые мигрируют в другое приложение), а некоторые другие действительно изменились, то я не думаю, что migrate --fake является вариантом, который я могу использовать.

Что я могу сделать?

Я думаю, что самый безопасный подход заключается в следующем:

  1. Создайте новое приложение с новыми скопированными моделями
  2. Запустите python manage.py makemigrations для создания миграций для нового приложения
  3. Запустите python manage.py migrate для применения миграций к вашей БД
  4. Запустите python manage.py makemigrations --empty для создания пустой миграции (вам все еще нужно указать имя приложения)
  5. Отредактируйте эту миграцию, чтобы добавить пользовательский python код, используя синтаксис RunPython (см. docs для более подробной информации - не забудьте добавить также обратный код, чтобы ваша миграция могла быть неприменима). Этот код должен перенести все данные из старой таблицы в новую и наоборот для обратного кода.
  6. Примените миграцию
  7. Удалите ваши старые модели и запустите makemigrations
  8. .
  9. Примените последние миграции

Я считаю этот процесс самым безопасным, и вы всегда можете вернуться к любому состоянию в процессе, не теряя никаких данных.

Вернуться на верх