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

Fer*_*ves 43 django django-migrations django-1.8

我的迁移出了点问题,我在模型中添加了一个新的datetimefield然后我使用了makemigrations并进行迁移.

python manage.py makemigrations
python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

但在此之后,迁移得到了"表已存在错误".我想我可以假装迁移并重新开始,所以我做到了

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
Run Code Online (Sandbox Code Playgroud)

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

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

Vas*_*eev 88

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

python manage.py migrate --fake core 0003
Run Code Online (Sandbox Code Playgroud)

然后像往常一样继续:

python manage.py migrate core
Run Code Online (Sandbox Code Playgroud)

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

  • @EvyatarSivan你应该使用`zero`而不是迁移号,例如`python manage.py migrate --fake core zero` (7认同)
  • 另请参阅`--fake-initial`标志https://docs.djangoproject.com/en/1.8/topics/migrations/#adding-migrations-to-apps. (2认同)