Relancer un Django de migration de données
Comment relancer un de migration des données sur Django 1.8+? Le cas échéant, de ma migration est numéroté 0011_my_data_migration.py et est la dernière migration.
- Juste une remarque que le Q et solutions sont encore à travailler sur Django 2.1
Vous devez vous connecter pour publier un commentaire.
Faux retour à la migration avant celui que vous voulez à nouveau.
Puis exécutez à nouveau la migration.
Alors vous pouvez semblant de retour à la migration la plus récente que vous avez exécuté. Dans votre cas, vous avez dit que 0011 était la dernière, de sorte que vous pouvez sauter cette étape.
Note que selon l'état de votre base de données et le contenu des migrations, en relançant une migration, comme cela pourrait provoquer des erreurs. Notez l'avertissement dans les docs sur le
--fake
option:./manage.py migrate --fake yourapp zero
si c'est la première migration.Alasdair réponse donne un avertissement à ce sujet, mais feignent d'une migration de retour à la précédente n'est sûr que si votre migration est la quantité, ce qui signifie que vous pouvez exécuter à plusieurs reprises, sans effets secondaires comme des données en double. La plupart des gens n'écrivent pas leurs migrations, de cette façon, mais c'est une bonne pratique.
Vous avez deux options pour faire de ce processus de coffre-fort:
Model.objects.get_or_create()
méthode) ou supprimé et recréé. Réutilisé est la meilleure option, comme la suppression et recréation va changer de base de données d'index et de séquences.migrations.RunPython()
. Par exemple, si vous avezmigrations.RunPython(add_countries)
, vous pouvez modifier que pourmigrations.RunPython(add_countries, remove_countries)
et de supprimer tous les pays concernés dans le deuxième fonction.Si vous choisissez l'option n ° 2 ensuite, vous devez exécuter:
Si tu voulais faire qu'une seule ligne de sorte que vous pouvez utiliser encore et encore:
--fake
dans le one-liner?