Можно ли переименовать файл миграции Django?
Так как Django 1.8, команда makemigrations
имеет --name, -n
option, чтобы указать собственное имя для созданного файла миграции.
Я хотел бы знать, безопасно ли в старых версиях Django создать файл миграции с автоматически сгенерированным именем и затем переименовать файл вручную. Кажется, он работает так, как ожидалось. Существуют ли потенциальные риски?
Ответы
Ответ 1
Это работает с небольшим предостережением: Django больше не будет знать, что применяется переименованная миграция.
Итак, шаги по переименованию переноса:
- Переименуйте файл.
- Отменить любые зависимости от нового файла.
- Если переименованная миграция уже была применена, примените ее снова, используя
--fake
.
Если это новая миграция, 2 и 3 не будут применяться, и это прекрасно, чтобы переименовать их.
Ответ 2
Это происходит в Django каждый раз, когда миграция сжата. Создается новый файл, который содержит переменную класса replaces
, в ней перечислены файлы миграции, которые заменяются.
Итак, чтобы переименовать файл миграции файлов, добавьте следующую переменную в класс Migration:
replaces = [('app name', 'migration file name'), ]
И все работает так, как это делалось до изменения файла.