Ok, parece una pregunta realmente tonta, y estoy seguro de que me falta algo en alguna parte.
¿Cómo se realiza una migración hacia atrás usando South en Django?
Así que modifiqué mis modelos, creé una migración con schemamigration
, ejecuté la migración con migrate
, y ahora me doy cuenta de que eso no es exactamente lo que quería y lo quiero como antes.
A falta de editar manualmente tablas de db y eliminar archivos de migración, ¿cómo debo hacer para revertir la migración? Encuentro referencias a migraciones hacia atrás usando South a través de Google, pero aún no he encontrado un ejemplo de código sólido para ello.
¿Alguien puede ayudar?
django
migration
django-south
Ruiwen
fuente
fuente
Respuestas:
Debe calcular el número de la migración justo antes de la que desea revertir.
Su aplicación debe tener un directorio de migraciones, con archivos que se denominen como
Normalmente, cuando ejecuta
./manage.py migrate your_app
, South ejecuta todas las migraciones nuevas, en orden. (Mira las tablas de la base de datos para decidir cuáles son 'nuevas').Sin embargo, también puede especificar cualquier migración por número, y South migrará su base de datos, ya sea hacia adelante o hacia atrás , para llevarla a ese punto. Entonces, con los archivos de ejemplo anteriores, si ya ha migrado hasta 0003 y desea ejecutar 0003 en reversa (deshaciéndolo, efectivamente), ejecutará
South miraría la base de datos, se daría cuenta de que ya ha ejecutado 0003 y determinaría que debe ejecutar la migración inversa para 0003 para volver a 0002.
fuente
En caso de que alguien (como yo) se preguntara cómo migrar desde la inicial (0001) :
salida:
"cero" es un estado especial antes de cualquier migración.
Referencia: http://south.aeracode.org/docs/commands.html
fuente
migrate 0000
no funcionó. Acerca de la migración falsa, sí, es posible que la necesite, por ejemplo, si solo necesita deshacer la migración inicial (probablemente incorrecta), pero el historial de migración piensa que esta migración nunca ocurrió.Agregue un nombre de migración al final de los parámetros:
fuente
00xx
, es suficiente. Al mejorar y probar una migración, puede tener ambos comandos en el historial: adelante (sin argumento), hacia atrás con el número de estado anterior.