use*_*666 4 django-models django-migrations
根据创建django迁移时的django文档,我们应该使用apps.get_model()而不是导入模型并使用它们.
为什么数据迁移必须使用模型的历史版本而不是最新版本?(模型的历史版本不会正在使用吗?)
A. *_*arr 10
它使用模型的历史版本,以便在您对另一个数据库运行迁移时尝试访问代码库中可能不再存在的字段时不会出现问题.
如果您从模型中删除了某些字段,然后想要在某个新数据库上运行迁移,并且您直接导入模型,则可能会发现您的迁移会尝试使用不存在的字段.使用apps.get_model(...)
Django时,会尝试对其进行智能操作,并使用migrations.AddField(...)
迁移文件中的定义在该时间点为您提供正确的模型版本.
这也是Django在数据迁移中使用自定义模型/模型管理器方法时要小心的原因,因为我不相信他们可以从迁移历史记录中重新创建这些方法,或者行为可能会随着时间的推移而发生变化,而且迁移也不会始终如一.
归档时间: |
|
查看次数: |
2189 次 |
最近记录: |