Odoo在员工页添加跳转模块视图按钮报ir.ui.client错误如何解决
报错原因排查
错误栈核心提示KeyError: 'ir.ui.client',Odoo中不存在ir.ui.client这个模型,你的XML配置里把视图继承的record模型写错了,就是下面这行代码导致的报错:
<record id="action_organizational_chart" model="ir.ui.client">
除此之外还有两个常见的配置错误会导致功能异常:
- 你按钮里引用的action xml id前缀是
hr_organization_chart,如果你的组织架构模块名是hr_organizational_chart(多了一个字母l),拼写不一致会导致找不到对应跳转动作 - 你当前定义的视图record id和要跳转的action id重名,会触发ID冲突
正确实现方案
1. 修正视图继承XML配置
继承员工表单视图加按钮的完整正确代码如下:
<!-- 注意record的model是ir.ui.view,id不要和跳转的action重名 --> <record id="view_employee_form_inherit_org_chart" model="ir.ui.view"> <field name="name">hr.employee.form.inherit.org.chart</field> <field name="model">hr.employee</field> <field name="inherit_id" ref="hr.view_employee_form"/> <field name="arch" type="xml"> <div id="o_work_employee_main" position="after"> <div id="o_employee_right"> <!-- 这里的模块前缀要和组织架构图action所属的模块名完全一致 --> <button name="%(hr_organizational_chart.action_organizational_chart)d" type="action" string="查看组织架构" class="oe_highlight"/> </div> </div> </field> </record>
2. 检查模块依赖配置
确保你模块的__manifest__.py里的depends字段已经添加了hr模块和组织架构图模块依赖:
'depends': ['base', 'hr', 'hr_organizational_chart'],
3. 验证跳转动作可用性
你可以在Odoo开发者模式下进入「设置-技术-动作-窗口动作」,搜索对应的组织架构跳转动作,确认它的外部ID和你按钮里写的完全一致。如果需要跳转后默认定位到当前员工,可以在按钮绑定的action里添加上下文参数context="{'default_employee_id': active_id}"。
内容的提问来源于stack exchange,提问作者senarijit1618
相关产品推荐
相关产品推荐

