0

我正在开发一个现有的 Django 项目,其中包含如下迁移代码:

someFluffyModel.objects.all().delete()

或者

someModel = SomeModel(....)
someModel.save()

现在,无论哪里有这样的代码,并且更新的迁移会更改反映模型当前版本的架构,从头开始应用迁移都会出现问题。

据我了解,原因是迁移中使用的模型并未及时反映迁移中使用的模型。正如我发现的那样,固定装置可以帮助加载数据,但删除呢?是从数据库中手动删除数据的首选方法吗?

4

1 回答 1

0

抱歉忘记回答我自己的老问题已经有好几年了,但以防万一有人对您的迁移感到好奇,您应该始终使用历史模型。原因是您在某个时间点获得模型(基于模式迁移增量重建)。

def forwards_func(apps, schema_editor):
    # We get the model from the versioned app registry;
    # if we directly import it, it'll be the wrong version
    Country = apps.get_model("myapp", "Country")

这样,如果您将来尝试使用模型架构重新运行迁移,x''旧迁移将使用x'x取决于它们的依赖关系运行。

避免不惜一切代价直接将模型导入迁移。

能够重新运行迁移始终很重要,因为这允许您在环境之间向后迁移,回滚错误的部署,最重要的是运行测试。如果你做错了,当你到达模式 x' 时,你的测试会在某个时候失败,你必须按照上面提到的正确方法来修复它们。

感谢@Daniel Roseman 那天给了我一些建议

于 2021-04-20T17:01:54.183 回答