我目前正在尝试更新我的Django模型,以合并一些新功能,但是在运行“makemigrations”之后,控制台输出让我担心我会覆盖数据库中的其他表。在
基本上,在我的模型.py,我有8个模型。一个是全新的,一个只是修改过的。我想将这些更改迁移到数据库中,以便运行“makemigrations”。一个迁移的文件被创建了(我注意到没有其他文件——可能是最初创建这些文件的同事出于任何原因删除了它们)。控制台输出为:
- Create model ModelNew
- Create model ModelDontTouch
- Create model ModelDontTouch
- Create model ModelDontTouch
- Create model ModelDontTouch
- Create model ModelDontTouch
- Create model ModelDontTouch
- Create model ModelUpdated
为什么它说创建模型?是因为,据Django所知,这是第一次执行迁移吗?或者它计划重写所有其他的表(这会彻底杀死我们的应用程序,并导致非常糟糕的一天)?在
我还注意到有些型号
^{pr2}$其他人,只是, db_tablespace='sometable'
其他人,什么都没有。有人对此有什么想法吗?在
Django在进行迁移时不询问数据库本身;它根据以前的迁移和模型的当前状态构建一个图。因此,如果之前没有迁移,Django将从头开始创建它们。这不会覆盖您的表,但实际上也不会起作用,因为它会尝试创建表,而数据库会拒绝。在
一种选择是临时恢复更改并再次运行makemigrations以回到正确的起点,然后使用
fake-initial
运行该迁移,将其标记为已应用而不实际执行,然后重新应用更改并再次运行makemigrations。在相关问题 更多 >
编程相关推荐