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 migré.

python manage.py makemigrations python manage.py migrate 

Mais après cela, la migration a obtenu une “erreur de table existe déjà”. Je supposais que je pouvais simuler les migrations et recommencer, alors j’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 aussi fausse (bien sûr!).

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

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 ensuite procédez comme d’habitude:

 python manage.py migrate core 

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