django 1.7 如何迁移现有表

django 1.7 how to migration with existed tables

我升级到django 1.7 并且需要处理迁移

我的数据库已经存在表

这是我的步骤:

1.I 删除 django 应用中的 migration test
2.I 在 django settings.py
中删除南方(从已安装的应用程序) 3.run python manage.py makemigrations test

  Migrations for 'test':
    0001_initial.py:
      - Create model Person
      - Create model Book
      - Create model Artical
  1. 运行python manage.py migrate test

    要执行的操作:
    应用所有迁移:test
    运行迁移:
    正在应用测试。0001_initial...伪造

对吗???
如果我已经有表,如何进行迁移?
请指导我谢谢

如果您的数据库中存在的表与您当前的模型具有相同的结构(即您在上次使用 South 进行迁移后没有修改 models.py 文件),那是正确的。如果是这样,您可以放心地进行。

如果结构不同,您可以尝试不同的方法:

  • 手动创建所需的迁移。您将不得不编写自己的迁移并进行必要的修改。 Here you can find some example code of a migrations file for altering or adding fields and here您拥有可以调用的方法的完整参考

  • 使用 phpmyadmin、raw sql 或您喜欢的方法手动修改数据库。

  • 做一个 python manage.py dumpdata app1 app2 app3 > data.json,删除数据库,重新创建一个 python manage.py loaddata data.json。这可能会引发一些错误,因为您保存的数据是旧结构,您将不得不处理每个错误。

  • 或者最不喜欢的,如果不需要你的数据,只需删除数据库并重新创建它。

你这样做没有错。

第一次迁移被伪造的原因是因为您的表已经创建:

Run python manage.py migrate. Django will see that the tables for the initial migrations already exist and mark them as applied without running them.

来自documentation on upgrading from South.