如何在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
相关产品推荐
相关产品推荐

