Odoo 15继承视图独立加载问题:修改影响主视图及优先级异常
Odoo 15 独立视图解决方案
要实现两个视图独立加载、互不影响,不要使用视图继承,直接创建全新的独立树视图,然后在菜单动作中指定该视图即可。具体步骤如下:
1. 创建独立的树视图
复制原视图(ep_gi.view_policy_tree)的核心结构,根据需求修改字段显示、按钮权限:
<record id="view_tree_renewal_notice" model="ir.ui.view"> <field name="name">epgi.policy.renewal.tree</field> <field name="model">epgi.policy</field> <!-- 无需设置inherit_id和mode,这是独立视图 --> <field name="arch" type="xml"> <tree create="false" edit="false" delete="false"> <!-- 保留你需要显示的字段,按顺序排列 --> <field name="name"/> <field name="underwriting_year_id"/> <!-- 新增的字段 --> <field name="state"/> <!-- 不需要的字段直接移除,或通过invisible属性隐藏 --> <!-- <field name="naicom_policy_uid" invisible="1"/> --> <!-- <field name="currency_id" invisible="1"/> --> <!-- 其他你需要展示的字段 --> </tree> </field> </record>
2. 关联菜单动作到新视图
找到对应菜单的ir.actions.act_window记录,指定新创建的树视图并设置筛选条件:
<record id="action_policy_renewal_notice" model="ir.actions.act_window"> <field name="name">Renewal Notice</field> <field name="res_model">epgi.policy</field> <field name="view_mode">tree</field> <!-- 绑定新创建的独立视图 --> <field name="view_id" ref="your_module.view_tree_renewal_notice"/> <!-- 设置你的筛选domain --> <field name="domain">[('your_field', '=', 'your_target_value')]</field> </record>
原方法问题说明
- 使用
inherit_id继承视图时,无论调整priority还是mode,修改都会加入原视图的继承链,必然影响主视图; mode="primary"会直接替换原视图的主版本,导致主视图同步变更;- 只有创建完全独立的视图,让菜单动作单独调用它,才能实现两个视图完全隔离、互不干扰。
内容的提问来源于stack exchange,提问作者MarkHenri
相关产品推荐
相关产品推荐

