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

Odoo 16自定义模块树形视图头部按钮不显示求助

Odoo 16树形视图头部按钮正确添加方式

你按钮不显示的核心原因是树形视图内不能用<header>标签包裹按钮,Odoo 16的树形视图有两种标准的按钮添加方式,按需选择:

方式一:直接添加顶部操作按钮

把按钮直接放在<tree>标签下即可,无需额外包裹标签,修改后的视图代码:

<record id="cc_order_tree_view" model="ir.ui.view">
    <field name="name">cc.order.list</field>
    <field name="model">cc.order</field>
    <field name="arch" type="xml">
        <tree>
            <button name="action_mark_as_discarded" string="Discard" class="oe_highlight" type="object" data-hotkey="d"/>
            <field name="number" />
            <field name="itemsTotal" />
            <field name="total" />
            <field name="odoo_status" />
        </tree>
    </field>
</record>

方式二:通过动作(Action)添加批量操作按钮

如果需要的是勾选记录后才显示的批量操作按钮,建议通过窗口动作配置:

  1. 先定义服务器动作(关联你的方法):
<record id="action_mark_as_discarded_server" model="ir.actions.server">
    <field name="name">Mark as Discarded</field>
    <field name="model_id" ref="model_cc_order"/>
    <field name="state">code</field>
    <field name="code">
        records.action_mark_as_discarded()
    </field>
</record>
  1. 在树形视图对应的窗口动作中添加工具栏按钮:
<record id="cc_order_action" model="ir.actions.act_window">
    <field name="name">CC Orders</field>
    <field name="res_model">cc.order</field>
    <field name="view_mode">tree,form</field>
    <field name="view_id" ref="cc_order_tree_view"/>
    <field name="toolbar" eval="{'action': [('action_mark_as_discarded_server', 'primary')]}"/>
</record>

必须检查的关键点

  • 确保cc.order模型中已实现action_mark_as_discarded方法,示例代码:
class CCOrder(models.Model):
    _name = 'cc.order'
    # 你的字段定义...
    number = fields.Char(string="Number")
    itemsTotal = fields.Float(string="Items Total")
    total = fields.Float(string="Total")
    odoo_status = fields.Selection([('draft','Draft'),('discarded','Discarded')], string="Status")

    def action_mark_as_discarded(self):
        self.write({'odoo_status': 'discarded'})
        return True
  • 检查用户权限:确保当前用户拥有cc.order模型的读写权限,以及调用该方法的权限,可在ir.model.access中配置对应权限规则。
  • 若需控制按钮显示条件,可添加attrs属性,比如已废弃的记录隐藏按钮:
<button name="action_mark_as_discarded" string="Discard" class="oe_highlight" type="object" data-hotkey="d" attrs="{'invisible': [('odoo_status', '=', 'discarded')]}"/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:45:11