migrations migracion hacer eliminar datos app django django-migrations

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.