说我有这些迁移:
此时一切正常,但如果我再添加一个架构迁移:
然后尝试针对新数据库或任何尚未拥有0003的数据库运行迁移,0003会因为"列栏不存在而导致出现#34;。
处理该方案的正确方法是什么?在添加架构迁移时,是否始终必须重新进行数据迁移,以便数据迁移始终是最后的?有没有办法让数据迁移不关心" bar"还不存在吗?数据迁移并没有使用" bar",但由于某种原因,Django仍然认为它需要它存在于那一点......
我使用内置的Django迁移,而不是南方。
答案 0 :(得分:2)
您如何在数据迁移中访问模型?
确保通过apps / schema_editor访问ORM,而不是直接导入模型。
传递给迁移工作者函数的第一个参数是一个应用程序注册表,其中包含加载到其中的所有模型的历史版本,以匹配迁移所在历史记录中的位置。
即。在您的数据迁移中,您不应该有这样一行:
from my_app import MyModel
而是更像这样的东西
MyModel = apps.get_model("my_app", "MyModel")