Django旧版数据库:如果managed = false,是否需要--fake-initial?

时间:2019-02-21 09:31:16

标签: django django-models

我正在迁移一个模型,该模型在旧数据库中已经有一个表。

如果我在该模型的managed = False类中指定了Meta,在执行第一个--fake-initial命令时是否仍然必须使用migrate

基于docs,我对managed = False的理解是Django不会创建任何表,因此--fake-initial似乎是多余的。在这种情况下,还有其他原因要使用--fake-initial吗?

1 个答案:

答案 0 :(得分:2)

managed = False 属性告诉Django不要创建表作为迁移命令的一部分,并且不要在刷新后删除表。这里的问题是,Django也不会在测试期间创建表。因此,如果要针对非生产数据库测试代码,则不会出现表错误。使用managed = True并使用-fake-inital 运行首次迁移时,Django不会创建新表,但是在测试时,您将能够创建测试数据库。