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

如何在Odoo 16社区版创建按钮旁添加新按钮?

在Odoo树形视图创建按钮旁添加自定义按钮的实现方法

1. 准备自定义模块(无模块时需创建)

如果没有专属自定义模块,先搭建基础模块结构,包含__manifest__.py配置文件,以及models、views目录。

2. 编写视图XML代码

在模块的views目录下创建或修改视图文件,通过继承原树形视图,在工具栏区域插入新按钮:

<odoo>
  <record id="inherit_target_tree_view" model="ir.ui.view">
    <field name="name">target.model.tree.inherit</field>
    <field name="model">your.target.model</field> <!-- 替换为你要修改的模型,比如res.partner -->
    <field name="inherit_id" ref="base.view_partner_tree"/> <!-- 替换为原树形视图的外部ID -->
    <field name="arch" type="xml">
      <!-- 定位到创建按钮所在位置,在其后插入新按钮 -->
      <xpath expr="//tree/toolbar/button[@name='create']" position="after">
        <button name="action_custom_operation" string="自定义按钮" type="object" class="oe_highlight"/>
      </xpath>
    </field>
  </record>
</odoo>

3. 在模型中添加按钮触发方法

在对应模型的.py文件里,定义按钮点击后执行的逻辑:

from odoo import models, api

class TargetModel(models.Model):
    _inherit = 'your.target.model'  # 替换为目标模型,比如res.partner

    def action_custom_operation(self):
        # 此处编写按钮触发后的业务逻辑,示例为打开当前记录的表单视图
        self.ensure_one()
        return {
            'type': 'ir.actions.act_window',
            'name': '自定义操作',
            'res_model': self._name,
            'view_mode': 'form',
            'res_id': self.id,
            'target': 'current',
        }

4. 升级模块验证效果

  • 进入Odoo后台,找到你的自定义模块并点击升级
  • 打开目标模型的树形视图,即可看到创建按钮旁的新按钮

关键注意点

  • 确认inherit_id引用的是原树形视图的正确外部ID,可通过开发者模式查看原视图的外部ID
  • 按钮type属性选object对应模型方法,选action对应已定义的动作
  • 用class="oe_highlight"可让按钮和创建按钮保持一致的高亮样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:15:35