Как раздавить последние миграции Django?
в коде миграции Django есть squashmigrations
команда, которая: "давит миграции для app_label
до migration_name
вниз в меньшее количество миграций, если это возможно."
Итак, если вы хотите раздавить, скажем, первые 5 миграций, это поможет.
каков наилучший способ сквоша, начиная с конкретного migration_name
?
в проекте, над которым я сейчас работаю, мы добавили 5-10 новых файлов миграции по мере добавления новых функций. Мы развернем весь проект сразу, и похоже, что запуск их по отдельности займет слишком много времени. Я хотел бы раздавить все миграции для этого проекта в одну миграцию и проверить время для ее запуска.
2 ответов
python manage.py squashmigrations <appname> <squashfrom> <squashto>
python manage.py help squashmigrations
https://docs.djangoproject.com/en/dev/topics/migrations/#migration-squashing
Это даст вам более детальный контроль над тем, какие миграции раздавить, и позволит вам сохранить более чистую историю фиксации. Удаление + воссоздание всех миграций может вызвать другие проблемы, такие как циклические зависимости в зависимости от способа построения моделей.
вы можете просто удалить файлы миграции и запустить makemigrations
снова. Если у вас есть развертывание dev, которое использует их, вы должны мигрировать обратно на один перед первым удалением.
кроме того, вероятно, неплохо сначала зафиксировать код, если что-то пойдет не так.
также:
небольшое осложнение заключается в том, что если есть пользовательский код RunPython, он не будет включен в новую миграцию, созданную makemigrations