web-dev-qa-db-fra.com

Comment refaire une migration sur Django 1.8 après avoir utilisé --fake

Quelque chose s'est mal passé lors de mes migrations, j'ai ajouté un nouveau champ datetime à un modèle, puis j'ai utilisé makemigrations et migrate.

python manage.py makemigrations
python manage.py migrate

Mais après cela la migration a eu une "erreur de table existe déjà". Je supposais que je pouvais simuler les migrations et recommencer, alors je l’ai fait

python manage.py makemigrations --fake core

Operations to perform:
  Apply all migrations: core
Running migrations:
  Rendering model states... DONE
  Applying core.0001_initial... FAKED
  Applying core.0002_auto_20150525_1331... FAKED
  Applying core.0003_auto_20150525_1348... FAKED
  Applying core.0004_processo_data_atualizacao... FAKED

mais la nouvelle migration que je viens de créer était également fausse (bien sûr!).

Comment est la bonne façon de refaire une migration (dans ce cas le core.0004) après avoir fait cela?

43

Vous devez d’abord définir votre état actuel sur 0003 avec --fake _ (en supposant que 0003 est la dernière migration que vous avez réellement appliquée):

python manage.py migrate --fake core 0003

Et puis procédez comme d'habitude:

python manage.py migrate core

Documentation pertinente: https://docs.djangoproject.com/en/dev/ref/Django-admin/#migrate

87
Vasily Alexeev