Odoo14如何移除所有模型的kanban视图?
解决方案
你之前触发xpath报错的核心原因是直接清空kanban视图内容后,缺失了Odoo要求必填的kanban根节点,系统渲染时无法识别合法的kanban结构,以下是3种可行的落地方案:
方案1:隐藏kanban视图切换入口(优先推荐,兼容性最高)
不需要修改原有kanban视图,仅移除动作入口的kanban切换选项,完全不会触发其他依赖原有kanban视图的模块报错:
- 找到对应模型的
ir.actions.act_window记录,修改view_mode字段剔除kanban选项,示例代码如下:
<odoo> <!-- 移除销售订单的kanban切换入口 --> <record id="sale_order_action_inherit" model="ir.actions.act_window" inherit_id="sale.action_orders"> <field name="view_mode">tree,form,activity</field> </record> <!-- 移除采购订单的kanban切换入口 --> <record id="purchase_order_action_inherit" model="ir.actions.act_window" inherit_id="purchase.purchase_order_action_generic"> <field name="view_mode">tree,form,activity</field> </record> <!-- 其余模型按照上述格式补充即可 --> </odoo>
- 在自定义模块的
__manifest__.py的data列表中引入上述xml文件,同时在依赖列表中添加sale、purchase等你要修改的对应模块即可。
方案2:直接注销对应模型的kanban视图记录(彻底移除)
直接删除对应模型的kanban视图记录,适合确定不会有其他模块依赖该kanban视图的场景:
- 新建xml文件写入如下代码:
<odoo> <!-- 删除销售订单kanban视图 --> <delete model="ir.ui.view" domain="[('model','=','sale.order'),('type','=','kanban')]"/> <!-- 删除采购订单kanban视图 --> <delete model="ir.ui.view" domain="[('model','=','purchase.order'),('type','=','kanban')]"/> </odoo>
方案3:继承kanban视图隐藏内容(适配必须用视图继承的场景)
如果一定要用继承修改的方式实现,不要直接替换为空,保留必填的kanban根节点后添加隐藏属性即可,正确写法示例:
<odoo> <record id="sale_order_kanban_inherit" model="ir.ui.view"> <field name="name">sale.order.kanban.inherit</field> <field name="model">sale.order</field> <field name="inherit_id" ref="sale.view_order_kanban"/> <field name="arch" type="xml"> <xpath expr="//kanban" position="replace"> <kanban class="o_hidden"> <field name="name"/> </kanban> </xpath> </field> </record> </odoo>
- 必须保留至少一个模型字段在
kanban标签内,同时添加o_hidden类实现隐藏效果,不会触发xpath结构校验报错。
内容的提问来源于stack exchange,提问作者Sakthi Priya
相关产品推荐
相关产品推荐

