Безопасно ли переименовывать файл миграции Django?

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

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


person geckon    schedule 24.05.2015    source источник


Ответы (2)


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

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

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

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

person knbk    schedule 24.05.2015

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

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

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

И все работает так же, как и до смены файла.

person oden    schedule 10.05.2017