Tout d'abord, je pose des questions sur la migration Django introduite en 1.7, pas sur south
.
Supposons que j'ai des migrations 001_add_field_x
, 002_add_field_y
, et les deux sont appliqués à la base de données. Maintenant, je change d'avis et je décide d'annuler la deuxième migration et de la remplacer par une autre migration 003_add_field_z
.
En d'autres termes, je veux appliquer 001 et 003, en sautant 002, comment faire?
P.S. Je sais que je peux migrer vers 001, mais après avoir effectué la migration 003 et exécuté la commande migrate, 001 à 003 seront tous appliqués, non?
Vous pouvez utiliser le --fake
option.
Une fois que vous revenez à 0001
tu peux courir
python manage.py migrate <app> 0002 --fake
puis exécutez
python manage.py migrate <app> #Optionally specify 0003 explicitly
qui s'appliquerait uniquement 0003
dans ce cas.
Si vous ne souhaitez pas suivre ce processus pour tous les environnements/autres développeurs, vous pouvez simplement supprimer les fichiers de migration, exécuter un nouveau makemigration
et valider ce fichier - et oui, exécuter migrate
avec le --fake
option
Ne s'applique pas à ce cas spécifique, mais si l'on veut ou doit ignorer toutes les migrations non appliquées, cela peut être utilisé:
python manage.py migrate --fake
Enregistre juste un peu de frappe.