Как объединить несколько миграций django south в одну миграцию

Мы долгое время использовали юг для управления миграциями, и сейчас у нас около 100+ миграций.

Это заставило долгое время запускать python manage.py migrate на новой базе данных.

Мне интересно, могу ли я объединить все существующие миграции в одну миграцию


person Quanlong    schedule 25.07.2014    source источник
comment
Возможный дубликат Консолидация миграции Django South   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 07.06.2016


Ответы (2)


Это было решено в Django 1.7 +. Существует новая команда управления ./manage.py squashmigrations appname, проверьте эту ссылку - https://docs.djangoproject.com/en/1.7/topics/migrations/#squashing-migrations

person Njogu Mbau    schedule 28.05.2015

Вы можете использовать команду управления squashmigrations, чтобы добраться туда. Он оставит старые файлы миграции на месте, но при установке чего-то нового будет использовать сжатую версию.

Пример:

./manage.py squashmigrations core 0003_auto

См. официальную документацию.

Если вы хотите избавиться от всех проб и ошибок, возникающих во время разработки, удалите миграции из каталога ваших приложений migrations вместе со всеми упоминаниями о вашем приложении в таблице SQL django_migrations и фактических таблицах базы данных приложений.

Затем запустите ./manage.py makemigrations, и все готово. Это не рекомендуется для приложений, которые уже используются продуктивно.

person rgeber    schedule 23.01.2015
comment
Что дает модификация самой базы данных (как в… вместе со всеми упоминаниями вашего приложения в таблице SQL django_migrations)? Во время разработки я запустил makemigrations, чтобы что-то проверить, немного подправил поле, а затем снова запустил. Конечно, я закончил с двумя миграциями, которые казались грубыми для одного коммита репозитория. Тем не менее, простое удаление двух файлов и запуск makemigrations (без каких-либо упоминаний об очистке базы данных), казалось, исправило ситуацию. Или может я что-то тонкое напутал? - person natevw; 21.01.2016