You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何在Odoo产品页面的变体标签页添加按钮?

解决Odoo产品页面添加按钮时XPath定位失败的问题

错误原因分析

你遇到的 Element '<xpath expr="//page[@name='variants']">' cannot be located in parent view 错误,本质是XPath找不到目标页面节点,常见原因有三个:

  • 继承的父视图不正确
  • 目标页面的name属性与你写的不符(不同Odoo版本可能有差异)
  • XPath路径不够精确,导致匹配不到节点

具体解决步骤

1. 确认继承的父视图ID

确保你的XML视图继承的是产品表单的官方父视图,代码示例:

<record id="product_product_form_inherit_custom" model="ir.ui.view">
    <field name="name">product.product.form.inherit.custom</field>
    <field name="model">product.product</field>
    <!-- 继承官方产品表单视图 -->
    <field name="inherit_id" ref="product.product_product_form_view"/>
    <field name="arch" type="xml">
        <!-- 你的按钮代码放在这里 -->
    </field>
</record>

2. 检查目标页面的真实name属性

不同Odoo版本中,产品变体页面的name属性有变化:

  • Odoo 14及更早版本:变体页面name为variants
  • Odoo 15+版本:变体页面name改为attributes

你可以通过开发者模式验证:开启开发者模式 → 打开产品表单 → 点击「编辑视图: 表单」 → 找到变体所在的<page>标签,查看其name属性。

如果是Odoo 15+,修改XPath如下:

<xpath expr="//page[@name='attributes']" position="inside">
    <button string="Custom Button" type="object" name="custom_button_method"/>
</xpath>

3. 使用更精确的XPath路径

如果直接找<page>节点存在冲突,可限定父级节点缩小范围,比如先定位到表单内的笔记本组件:

<xpath expr="//form//notebook/page[@name='attributes']" position="inside">
    <button string="Custom Button" type="object" name="custom_button_method"/>
</xpath>

4. 验证模块依赖

确保你的模块__manifest__.py中已依赖product模块:

'depends': ['base', 'product'],

内容的提问来源于stack exchange,提问作者ahmed mohamady

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:10:08