Odoo 18自定义仪表盘求助:升级模块跳转至Discuss应用异常
Odoo自定义模块升级后跳转Discuss无法显示仪表盘的解决方案
核心问题定位
模块升级后跳转至Discuss,本质是模块入口动作未正确绑定自定义仪表盘视图,或视图/权限配置存在错误,导致Odoo无法找到模块默认入口, fallback到系统默认的Discuss应用。以下是针对性排查和修复步骤:
1. 检查模块入口动作与菜单绑定
打开模块的dashboard_views.xml,确认是否正确定义了仪表盘的窗口动作,并关联到模块菜单:
<!-- 定义仪表盘窗口动作 --> <record id="action_product_tracking_dashboard" model="ir.actions.act_window"> <field name="name">产品追踪工时表</field> <field name="res_model">product.tracking.dashboard</field> <!-- 替换为你的实际模型 --> <field name="view_mode">dashboard</field> <field name="target">current</field> <!-- 确保在当前页面打开,而非新窗口 --> <field name="context">{"search_default_group_by_product": 1}</field> <!-- 可选:默认筛选/分组 --> </record> <!-- 绑定到模块菜单 --> <menuitem id="menu_product_tracking_root" name="产品追踪" sequence="15"/> <menuitem id="menu_product_tracking_dashboard" name="工时表仪表盘" parent="menu_product_tracking_root" action="action_product_tracking_dashboard" sequence="10" />
同时检查模块的__manifest__.py,确保data列表包含dashboard_views.xml的路径,避免配置文件未加载:
'data': [ 'security/ir.model.access.csv', 'dashboard_views.xml', # 确认路径正确 ],
2. 验证仪表盘视图定义正确性
确保仪表盘视图的模型、类型和结构无语法错误:
<record id="view_product_tracking_dashboard" model="ir.ui.view"> <field name="name">product.tracking.dashboard.view</field> <field name="model">product.tracking.dashboard</field> <!-- 与动作的res_model一致 --> <field name="arch" type="xml"> <dashboard> <!-- 自定义仪表盘内容,示例:产品工时统计看板 --> <kanban> <field name="product_id"/> <field name="total_hours"/> <templates> <t t-name="kanban-box"> <div class="oe_kanban_global_click"> <div class="oe_kanban_content"> <h4><field name="product_id"/></h4> <div>总工时: <field name="total_hours"/></div> </div> </div> </t> </templates> </kanban> </dashboard> </field> </record>
重点检查:
model字段与动作的res_model完全匹配arch内根标签为<dashboard>,无未闭合标签或语法错误
3. 确认权限配置
在模块security/ir.model.access.csv中,为仪表盘模型添加访问权限,确保当前用户有权限查看:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_product_tracking_dashboard,product.tracking.dashboard.access,model_product_tracking_dashboard,base.group_user,1,0,0,0
model_id:id需与模型的xml_id一致(格式为model_模型名)- 确保登录用户属于
base.group_user或你指定的权限组
4. 清除缓存并重新升级模块
在Docker容器内执行以下命令,强制清除Odoo缓存并重新加载模块配置:
# 进入Docker容器(替换为你的容器名) docker exec -it odoo_container bash # 清除缓存并升级模块(替换为你的模块名) odoo-bin -c /etc/odoo/odoo.conf --clear-cache -u product_tracking
5. 排查视图/动作冲突
开启Odoo开发者模式,进入设置 > 技术 > 动作 > 窗口动作,搜索你的动作ID(如action_product_tracking_dashboard):
- 确认动作的
res_model和view_mode与你的配置一致 - 检查是否存在其他模块覆盖了该动作或视图的xml_id,导致加载失败
内容的提问来源于stack exchange,提问作者Bill
相关产品推荐
相关产品推荐

