migracion - migrate models django
¿Cómo aplastar las migraciones recientes de Django? (2)
En el código de migración de Django, hay un comando squashmigrations
que: "Aplasta las migraciones de app_label
hasta e incluyendo el nombre de migration_name
en menos migraciones, si es posible".
Entonces, si quieres aplastar, por ejemplo, las primeras 5 migraciones, esto te ayudará.
¿Cuál es la mejor manera de aplastar comenzando con un nombre de migration_name
particular?
En un proyecto en el que estoy trabajando actualmente, hemos agregado de 5 a 10 nuevos archivos de migración a medida que agregamos nuevas funciones. Implementaremos todo el proyecto de una vez y parece que ejecutarlos individualmente tomará demasiado tiempo. Me gustaría aplastar todas las migraciones para este proyecto en una sola migración y probar el tiempo para ejecutar eso.
Solo puede eliminar los archivos de migración y ejecutar makemigrations
nuevamente. Si tiene un despliegue de desarrollo que los utiliza, debe volver a migrar a la anterior a la primera que elimine.
Además, probablemente sea una buena idea cometer su código primero, en caso de que algo salga mal.
También:
La ligera complicación de esto es que si hay un código RunPython personalizado, no se incluirá en la nueva migración creada por makemigrations
python manage.py squashmigrations <appname> <squashfrom> <squashto>
python manage.py help squashmigrations
https://docs.djangoproject.com/en/dev/topics/migrations/#migration-squashing
Esto le dará más control granular sobre las migraciones a squash y le permitirá mantener un historial de compromiso más limpio. Eliminar y volver a crear todas las migraciones puede causar otros problemas, como dependencias circulares, según cómo se construyan los modelos.