Odoo 13导入数据库转储后报'website'无get_active_website_setting属性错误
对应报错核心信息
AttributeError: 'website' object has no attribute 'get_active_website_setting' odoo.addons.base.models.qweb.QWebException: Error to render compiling AST Template: web.login Path: /t/t/t Node: <t t-set="signup_settings" t-value="website.get_active_website_setting()"/>
报错根因
出现该报错的核心是导入的数据库转储对应的运行环境,与当前本地部署的Odoo13环境模块配置不匹配:
get_active_website_setting不是Odoo13官方website模块自带的原生方法,从模板调用场景(获取注册页配置)判断,这个方法大概率是原数据库运行环境上,安装的网站注册审批、自定义注册流类第三方模块给website模型新增的扩展方法- 当前本地Odoo服务未加载、安装对应提供该方法的模块,QWeb引擎渲染登录页模板时,找不到绑定在website对象上的该方法,直接抛出属性不存在错误。
解决步骤
快速临时方案(适合急需进入后台的场景)
直接通过Odoo Shell绕开模板中的无效方法调用,无需调整源码:
- 首先通过psql连接数据库,查询当前已安装的模块清单,方便后续对比缺失模块:
SELECT name FROM ir_module_module WHERE state = 'installed'; - 进入Odoo Shell连接导入的目标数据库,执行命令:
odoo-shell -d 你的导入数据库名称 -c /opt/odoo13/odoo.conf - 在Shell交互界面执行以下代码,修复模板内容:
# 获取web.login对应的视图记录 login_view = env.ref('web.login') # 移除调用不存在方法的代码节点 fixed_arch = login_view.arch.replace( '<t t-set="signup_settings" t-value="website.get_active_website_setting()"/>', '' ) # 写入修改并提交数据库事务 login_view.write({'arch': fixed_arch}) env.cr.commit() - 退出Shell后重启Odoo服务,即可正常打开登录页。
长期适配方案(避免后续同类报错)
仅临时修模板可能导致其他页面同样出现缺方法的报错,需要从模块匹配层面彻底解决:
- 对比原数据库导出的已安装模块列表,将提供
get_active_website_setting方法的模块源码拷贝到当前Odoo服务的自定义模块加载路径下 - 升级对应模块,让模型定义与数据库中存储的模板、业务逻辑完全匹配
- 如果不需要原环境的网站注册、登录定制功能,可直接在模块列表中卸载对应定制模块,同时全局清理所有引用了该不存在方法的QWeb模板,消除所有同类渲染报错。
内容的提问来源于stack exchange,提问作者Deepak Raj
相关产品推荐
相关产品推荐

