我有一个充满了大量数据的现有数据库。我想迁移到Django,所以我继续用python manage.py inspectdb
创建了必要的模型。除了删除managed = False
之外,我还没有改变任何东西,因为我希望Django管理表(错误可能是初始迁移?)。
现在模型已准备就绪,如何生成第一个迁移文件,以便我可以开始更改字段以生成其他迁移(在此处重命名字段)。我理解python manage.py migrate
将处理Django特定模型的创建,但实际上并不创建任何迁移文件?某些来源表明第一个迁移文件应与--fake
一起运行,因此未应用。下一个迁移文件是否会记得将第一个迁移文件作为假文件运行并仅应用下一个文件?
答案 0 :(得分:3)
您希望makemigrations
创建迁移。 migrate
命令应用迁移,但不创建它们。
您可以使用--fake-initial
选项,以便Django不会尝试创建已存在的表。请注意,--fake
和--fake-initial
是两个不同的命令。
运行migrate
时,django_migrations
表会更新以存储当前应用的迁移。迁移文件本身不会更改。 --fake
命令在不运行迁移的情况下更新django_migrations
表。这意味着如果您错误地使用它,您的数据库和django_migrations
表可能会不同步,这可能很难修复。