我有一个现有的数据库,里面装满了一堆数据。我想迁移到 Django,所以我继续使用 python manage.py inspectdb
创建了必要的模型。除了删除 managed = False
之外,我没有做任何更改,因为我希望 Django 管理表(可能是初始迁移的错误?)。
现在模型已准备就绪,我如何生成第一个迁移文件,以便我可以开始更改字段以生成其他迁移(在这里和那里重命名字段)。我了解 python manage.py migrate
将处理特定于 Django 的模型的创建,但实际上并不创建任何迁移文件?一些来源表明第一个迁移文件应该使用 --fake
运行,所以它没有被应用。下一个迁移文件是否会记得将第一个文件作为假文件运行并仅应用下一个文件?
最佳答案
您希望 makemigrations
创建迁移。 migrate
命令应用迁移,而不创建它们。
您可以使用 --fake-initial
选项,这样 Django 就不会尝试创建已经存在的表。请注意,--fake
和 --fake-initial
是两个不同的命令。
当您运行 migrate
时,django_migrations
表会更新以存储当前应用的迁移。迁移文件本身没有改变。 --fake
命令更新 django_migrations
表而不运行迁移。这意味着如果你不正确地使用它,你的数据库和 django_migrations
表可能会不同步,这可能很难修复。
关于python - 现有数据库的新 Django 应用程序初始数据库迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879828/