使用 --fake 后如何在 django 1.8 上重做迁移

How to redo a migration on django 1.8 after using --fake

我的迁移出了点问题,我向模型添加了一个新的日期时间字段,然后我使用了 makemigrations 和 migrate。

python manage.py makemigrations
python manage.py migrate

但在此之后迁移得到了 "table already exists error"。我想我可以伪造迁移并重新开始,所以我做到了

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

但是我刚刚创建的新迁移也是伪造的(当然!)。

执行此操作后重做迁移(在本例中为 core.0004)的正确方法是什么?

您应该首先使用 --fake 将当前状态设置为 0003(假设 0003 是您真正应用的最后一次迁移):

python manage.py migrate --fake core 0003

然后照常进行:

python manage.py migrate core

相关文档:https://docs.djangoproject.com/en/dev/ref/django-admin/#migrate