Wagtail项目中Django迁移执行后仍提示未应用问题
问题解决方案
一、搞定"core应用有1个未应用迁移"的问题
- 先确认迁移状态:执行
python manage.py showmigrations core,查看0019_whofundsyoupage_stream是否带有[X]标记。如果没有标记,直接指定应用该迁移:python manage.py migrate core 0019_whofundsyoupage_stream - 检查迁移依赖:打开
0019_whofundsyoupage_stream.py,查看dependencies列表是否指向core应用的上一个迁移(比如以0018_开头的文件),若依赖错误,修正后重新执行migrate - 清理迁移缓存:删除项目根目录和
core/migrations目录下的__pycache__文件夹,再重新执行migrate - 核查数据库记录:打开数据库的
django_migrations表,确认core应用的0019迁移是否已被记录。如果已有记录但系统仍提示未应用,先备份数据库,删除该条记录后重新执行migrate
二、解决URL命名空间不唯一警告
- 检查项目的
urls.py和各应用的urls.py,确保每个应用的app_name设置唯一;如果应用urls.py中已定义app_name = 'core',项目urls.py在include时就不要重复指定namespace='core' - 全局搜索
app_name,将重复的命名空间修改为唯一值
三、处理Wagtail WidgetWithScript钩子弃用警告
- Wagtail的
register_widget_with_script钩子已被弃用,替换为register_form_widget。比如原代码:
修改为:from wagtail.core.widgets import WidgetWithScript from wagtail.core import hooks @hooks.register('register_widget_with_script') def register_my_widget(): return MyCustomWidgetfrom wagtail.core import hooks @hooks.register('register_form_widget') def register_my_widget(): return MyCustomWidget - 若你自定义了继承
WidgetWithScript的组件,查看对应Wagtail版本的官方文档,替换为BaseWidget或新的组件写法,自行处理脚本加载逻辑
内容的提问来源于stack exchange,提问作者KindOfGuy
相关产品推荐
相关产品推荐

