Odoo 17列表视图隐藏新建按钮并保留导入功能的实现问题
Odoo 17:隐藏列表视图新建按钮并保留导入选项的解决方案
问题描述
需要在medical.progress模型的列表(tree)视图中隐藏新建按钮,同时保留导入功能,但直接创建新视图的XML配置未生效。
问题原因
直接创建新视图而非继承原有视图时,Odoo可能优先加载原视图,导致自定义配置不生效。正确的做法是通过视图继承来修改原有tree视图的属性。
正确配置示例
<record id="view_medical_progress_tree_inherit" model="ir.ui.view"> <field name="name">medical.progress.tree.inherit</field> <field name="model">medical.progress</field> <!-- 替换为原medical.progress tree视图的实际ID,可在开发者模式下查看 --> <field name="inherit_id" ref="medical.view_medical_progress_tree"/> <field name="arch" type="xml"> <xpath expr="//tree" position="attributes"> <attribute name="create">false</attribute> <attribute name="import">true</attribute> </xpath> </field> </record>
关键说明
- 视图继承:必须基于原有的tree视图进行继承修改,而非重新创建视图,确保Odoo加载你的自定义配置。
- 依赖配置:在模块的
__manifest__.py中确保依赖medical模块('depends': ['medical']),否则继承会失效。 - 权限验证:若用户本身无
medical.progress模型的创建权限,按钮也会隐藏,但视图层面的create="false"会强制隐藏按钮,不受权限影响。
验证步骤
- 开启开发者模式,找到原
medical.progress的tree视图ID并替换到配置中。 - 保存配置后升级模块。
- 刷新页面,检查列表视图的新建按钮是否隐藏,导入选项是否保留。
内容的提问来源于stack exchange,提问作者Carlos Chavita
相关产品推荐
相关产品推荐

