升级Wagtail 4.2.4至5.0是否需删除迁移文件中wagtail.core引用?
关于Wagtail 5.0迁移文件删除
wagtail.core引用的必要性 Wagtail 5.0对核心模块做了彻底的拆分重构,原来的wagtail.core包已经被废弃并移除,取而代之的是多个细分的独立模块(比如wagtail.models、wagtail.fields、wagtail.admin等)。
之所以要求修改迁移文件里的wagtail.core引用,核心原因是Django的迁移系统会严格依赖迁移文件中记录的导入路径:
- 如果迁移文件里还保留着
wagtail.core相关的引用,Django在执行迁移时会尝试导入这个已经不存在的模块,直接抛出ImportError,导致迁移流程卡死 - 旧的迁移文件会成为项目迁移历史的一部分,即便你现在代码里已经替换了引用,遗留的迁移文件依然会触发这个问题
举个具体例子:原来迁移里的from wagtail.core.models import Page,在Wagtail 5.0里要改成from wagtail.models import Page;wagtail.core.fields.RichTextField要改成wagtail.fields.RichTextField,这类替换必须覆盖所有历史迁移文件。
另外要注意,不光是迁移文件,你项目代码里所有import wagtail.core的地方也得同步替换,不然项目运行时同样会报错。修改完之后建议先在测试环境跑一遍python manage.py migrate,确认没有问题再推到生产环境。
内容的提问来源于stack exchange,提问作者Dexter
相关产品推荐
相关产品推荐

