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

Odoo13中如何通过域控制crm.lead的act_window动作可见性?

解决Odoo13中按线索/商机类型隐藏批量动作的问题

直接给ir.action.act_window添加普通的domain字段是无效的——这个字段用于过滤动作打开后展示的记录,而非控制动作本身在列表视图中的可见性。要实现只在线索(lead)列表中显示该动作,有两种直接可行的方案:

方案1:使用binding_domain控制动作可见性

在你的ir.actions.act_window XML定义中,添加binding_domain字段,指定仅当当前记录集满足该域条件时,动作才会显示:

<record id="action_change_lead_owner" model="ir.actions.act_window">
    <field name="name">更改线索所有者</field>
    <field name="res_model">wizard.change.lead.owner</field>
    <field name="view_mode">form</field>
    <field name="target">new</field>
    <field name="binding_model_id" ref="crm.model_crm_lead"/>
    <field name="binding_view_types">list</field>
    <!-- 关键:用binding_domain控制动作何时显示 -->
    <field name="binding_domain">[('type', '=', 'lead')]</field>
</record>

binding_domain会自动过滤动作的显示场景:当列表视图中的记录均为商机(opportunity)时,该动作会被隐藏;只有当存在符合条件的线索记录时,动作才会出现在批量操作菜单中。

方案2:在视图中直接控制动作按钮的可见性

如果你的动作是通过列表视图的button节点手动添加的,可以给按钮加上attrs属性,直接控制可见性:

<record id="crm_lead_tree_view" model="ir.ui.view">
    <field name="name">crm.lead.tree.inherit</field>
    <field name="model">crm.lead</field>
    <field name="inherit_id" ref="crm.crm_lead_tree_view"/>
    <field name="arch" type="xml">
        <xpath expr="//tree" position="inside">
            <button name="%(action_change_lead_owner)d" 
                    string="更改线索所有者" 
                    type="action"
                    attrs="{'invisible': [('type', '=', 'opportunity')]}"/>
        </xpath>
    </field>
</record>

这种方式更直接,针对单个视图生效,适合需要精确控制视图展示的场景。

注意:使用方案1时,确保你的Odoo13版本支持binding_domain字段(该字段在Odoo 12+已存在),更新模块后刷新视图缓存即可生效。

内容的提问来源于stack exchange,提问作者Juraj Bezručka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:45:49