gpt4 book ai didi

django-models - 为什么在创建数据迁移时使用 apps.get_model()?

转载 作者:行者123 更新时间:2023-12-04 16:58:50 26 4
gpt4 key购买 nike

根据创建 django 迁移时的 django 文档,我们应该使用 apps.get_model() 而不是导入模型并使用它们。

为什么数据迁移必须使用模型的历史版本而不是最新版本?(模型的历史版本无论如何都不会使用对吗?)

最佳答案

它使用模型的历史版本,因此当您针对另一个数据库运行迁移时,尝试访问代码库中可能不再存在的字段时不会出现问题。

如果您从模型中删除了某个字段,然后想在某个新数据库上运行迁移,并且您直接导入模型,那么您可以预期您的迁移会提示尝试使用不存在的字段。使用时 apps.get_model(...) Django 会尽量聪明一点,并使用 migrations.AddField(...) 的定义。从您的迁移文件中为您提供当时正确版本的模型。

这也是 Django 说在数据迁移中使用自定义模型/模型管理器方法时要小心的原因,因为我不相信他们可以从迁移历史记录中重新创建这些方法,或者行为会随着时间的推移而改变而您的迁移不会始终如一。

关于django-models - 为什么在创建数据迁移时使用 apps.get_model()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37765307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com