Odoo中如何配置XML视图让创建按钮仅对指定用户组展示
Odoo视图创建按钮仅对特定用户组可见的实现方案
你当前的代码是给整个ir.ui.view绑定了groups_id,这会导致整个树视图仅对group_tbk_exim用户组可见,不符合仅控制创建按钮可见性的需求。
方案1:使用视图自带的groups_create属性(推荐,适配Odoo7及以上版本)
直接在tree标签上添加groups_create属性指定可查看创建按钮的用户组即可,修改后的代码如下:
<record model="ir.ui.view" id="sales_forecast_view_tree"> <field name="name">sales.forecast.tree</field> <field name="model">sales.forecast</field> <field name="priority" eval="16"/> <!-- 移除原来的groups_id字段,避免限制整个视图的可见性 --> <field name="arch" type="xml"> <!-- 新增groups_create属性指定有权限的用户组xml id --> <tree string="Sales Forecast" version="7.0" groups_create="ts_addons_tbk.group_tbk_exim"> <field name="name" /> </tree> </field> </record>
补充说明:
- 如需同时控制编辑、删除按钮的可见性,可额外添加
groups_write、groups_delete属性,值同样为对应用户组的xml id - 如果是form视图的创建按钮,给form标签添加
groups_create属性即可生效
方案2:多视图继承适配(兼容更低版本Odoo)
如果你的Odoo版本不支持groups_create属性,可以通过两个分层视图实现效果:
- 基础视图对所有用户开放,默认关闭创建权限
- 继承视图仅对目标用户组可见,重载开启创建权限
代码示例:
<!-- 基础视图:所有用户可见,关闭创建权限 --> <record model="ir.ui.view" id="sales_forecast_view_tree_base"> <field name="name">sales.forecast.tree.base</field> <field name="model">sales.forecast</field> <field name="priority" eval="15"/> <field name="arch" type="xml"> <tree string="Sales Forecast" version="7.0" create="0"> <field name="name" /> </tree> </field> </record> <!-- 组专属视图:仅对group_tbk_exim可见,开启创建权限 --> <record model="ir.ui.view" id="sales_forecast_view_tree_exim_group"> <field name="name">sales.forecast.tree.exim.group</field> <field name="model">sales.forecast</field> <field name="priority" eval="16"/> <field name="groups_id" eval="[(4,ref('ts_addons_tbk.group_tbk_exim'))]"/> <field name="inherit_id" ref="sales_forecast_view_tree_base"/> <field name="arch" type="xml"> <tree position="attributes"> <attribute name="create">1</attribute> </tree> </field> </record>
内容的提问来源于stack exchange,提问作者wenza
相关产品推荐
相关产品推荐

