Django 迁移不会更新我的数据库

Django migrate won't update my database

从现有数据库开始,我想更新它的架构。我换了一个模型,然后 运行

python manage.py makemigrations myapp

创建迁移,正确定义新表和列。示例输出:

Migrations for 'myapp':
  0001_initial.py:
    - Create model Foo
    - Add field Bar
    - ...

然后我应用迁移:

python manage.py migrate --database mydb

我得到这个输出:

Operations to perform:
  Apply all migrations: admin, myapp, contenttypes, sessions, auth
Running migrations:
  Rendering model states... DONE
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying auth.0007_alter_validators_add_error_messages... OK

好像有用。 Git告诉我"mydb"对应的sqlite文件变了。但是,它并没有在里面包含我的新表和列,它只是删除了内容,留下了带有旧模式的空表。

我做错了什么?

如果您有一个未应用迁移的遗留数据库,您应该创建 initial migrations 而不做任何更改。这意味着,如果您更改了“models.py”,将其恢复为原始状态,则 运行:

python manage.py makemigrations myapp

然后 运行“假”迁移

python manage.py migrate --database mydb --fake-initial

之后你可以修改你的“models.py”并使用正常的迁移。