我正在迁移一个模型,该模型在旧数据库中已经有一个表。
如果我在该模型的managed = False
类中指定了Meta
,在执行第一个--fake-initial
命令时是否仍然必须使用migrate
?
基于docs,我对managed = False
的理解是Django不会创建任何表,因此--fake-initial
似乎是多余的。在这种情况下,还有其他原因要使用--fake-initial
吗?
答案 0 :(得分:2)
managed = False 属性告诉Django不要创建表作为迁移命令的一部分,并且不要在刷新后删除表。这里的问题是,Django也不会在测试期间创建表。因此,如果要针对非生产数据库测试代码,则不会出现表错误。使用managed = True并使用-fake-inital 运行首次迁移时,Django不会创建新表,但是在测试时,您将能够创建测试数据库。