web-dev-qa-db-fra.com

Il existe un moyen d'annuler une migration sur Django et de la décocher de la liste des migrations show?

En fait, ce que je fais est:

  • Supprimez le fichier de migration.
  • Supprimez la ligne de la table Django_migrations sur la base de données.
  • Supprimez les modifications appliquées par la migration que je souhaite supprimer ou non appliquées.

Je veux savoir s'il y a une autre façon de faire cela.

23

Vous pouvez revenir en arrière en migrant vers la migration précédente. Consultez le dossier de migration de votre application, puis toutes les migrations.

Disons, par exemple, si vos migrations sont similaires au nombre ordonné et que la dernière migration est appliquée, 0012_latest_migration est actuellement appliquée.

0010_previous_migration
0011_next_migration
0012_latest_migration

Et vous voulez revenir à 0010_previous_migration

./manage.py migrate my_app 0010_previous_migration 

vous pouvez ensuite supprimer toutes les migrations suivantes, comme ici. Supprimez 0011_next_migration et 0012_latest_migration car vous avez déjà appliqué 0010_previous_migration.

Si vous utilisez Django 1.8+, vous pouvez afficher les noms de toutes les migrations avec

./manage.py showmigrations my_app

Pour inverser toutes les migrations pour une application, qu'elle soit initiale ou démarrée, vous pouvez exécuter:

./manage.py migrate my_app zero
70
Astik Anand