Можно ли переименовать файл миграции Django?

Так как Django 1.8, команда makemigrations имеет --name, -n option, чтобы указать собственное имя для созданного файла миграции.

Я хотел бы знать, безопасно ли в старых версиях Django создать файл миграции с автоматически сгенерированным именем и затем переименовать файл вручную. Кажется, он работает так, как ожидалось. Существуют ли потенциальные риски?

Ответ 1

Это работает с небольшим предостережением: Django больше не будет знать, что применяется переименованная миграция.

Итак, шаги по переименованию переноса:

  • Переименуйте файл.
  • Отменить любые зависимости от нового файла.
  • Если переименованная миграция уже была применена, примените ее снова, используя --fake.

Если это новая миграция, 2 и 3 не будут применяться, и это прекрасно, чтобы переименовать их.

Ответ 2

Это происходит в Django каждый раз, когда миграция сжата. Создается новый файл, который содержит переменную класса replaces, в ней перечислены файлы миграции, которые заменяются.

Итак, чтобы переименовать файл миграции файлов, добавьте следующую переменную в класс Migration:

replaces = [('app name', 'migration file name'), ]

И все работает так, как это делалось до изменения файла.