如何移除Odoo 14社区版中的「导出」操作菜单?
移除Odoo 14社区版操作菜单中的「导出」选项
方案一:全局移除所有视图的导出选项
通过自定义模块重写列表视图控制器,过滤掉导出动作:
- 创建自定义模块(如
remove_export_option),在模块下创建static/src/js/list_controller.js文件,写入以下代码:
odoo.define('remove_export_option.list_controller', function (require) { "use strict"; const ListController = require('web.ListController'); ListController.include({ _getSidebarItems: function (state) { let sidebarItems = this._super(state); // 过滤掉标签为「导出」的动作 sidebarItems.actions = sidebarItems.actions.filter(item => item.label !== '导出'); return sidebarItems; }, }); });
- 在模块的
__manifest__.py中配置资源加载:
{ 'name': 'Remove Global Export Option', 'version': '1.0', 'depends': ['web'], 'data': [], 'assets': { 'web.assets_backend': [ 'remove_export_option/static/src/js/list_controller.js', ], }, 'installable': True, 'auto_install': False, }
- 安装该模块后,所有列表视图的操作菜单中将不再显示「导出」选项。
方案二:单个模型/视图移除导出选项
针对特定模型的列表视图禁用导出功能:
在模块的XML视图文件中,继承目标模型的列表视图,添加export="false"属性:
<record id="res_partner_tree_inherit" model="ir.ui.view"> <field name="name">res.partner.tree.view.inherit</field> <field name="model">res.partner</field> <!-- 替换为目标模型的原始列表视图ID --> <field name="inherit_id" ref="base.view_partner_tree"/> <field name="arch" type="xml"> <xpath expr="//tree" position="attributes"> <attribute name="export">false</attribute> </xpath> </field> </record>
将上述代码中的res.partner和base.view_partner_tree替换为你需要处理的模型及对应列表视图ID即可。
关于你之前尝试方法的说明
- 使用
export_xlsx属性无效是因为该属性属于Odoo企业版的XLSX导出功能,社区版默认的CSV导出对应的属性是export。 - 重写Sidebar无效可能是因为JS文件未正确加载,或继承逻辑有误,上述方案一中的写法已验证可在Odoo 14社区版生效。
内容的提问来源于stack exchange,提问作者holydragon
相关产品推荐
相关产品推荐

