如何解决同一模型(含hr.employee)Kanban视图不同action仍同显问题?
解决Odoo中同一模型添加不同Kanban视图的问题
嘿,我完全懂你这个困扰!我刚开始在Odoo里配置多视图的时候也踩过一模一样的坑——明明建了两个不同的Kanban视图,配了不同的Action,结果打开还是同一个内容。其实问题大多出在视图的唯一标识和Action的视图绑定这两个点上,针对hr.employee模型,我给你一步步拆解解决方案:
1. 先确保两个Kanban视图的架构完全不同
首先,你得保证两个Kanban视图的arch部分是真的不一样——比如一个侧重员工的部门分组和基础信息,另一个侧重入职时间和绩效状态。下面是针对hr.employee的示例:
第一个Kanban视图(按部门分组)
<record id="hr_employee_kanban_department" model="ir.ui.view"> <field name="name">hr.employee.kanban.department</field> <field name="model">hr.employee</field> <field name="type">kanban</field> <!-- 关键:设置唯一的key,让Odoo区分这个视图 --> <field name="key">kanban_department</field> <field name="arch" type="xml"> <kanban default_group_by="department_id"> <field name="department_id"/> <field name="name"/> <field name="job_id"/> <field name="work_phone"/> <templates> <t t-name="kanban-box"> <div class="oe_kanban_global_click"> <div class="oe_kanban_content"> <h4><field name="name"/></h4> <p><field name="job_id"/></p> <p><field name="department_id"/></p> <p><field name="work_phone"/></p> </div> </div> </t> </templates> </kanban> </field> </record>
第二个Kanban视图(按入职日期分组)
<record id="hr_employee_kanban_hire_date" model="ir.ui.view"> <field name="name">hr.employee.kanban.hire_date</field> <field name="model">hr.employee</field> <field name="type">kanban</field> <!-- 另一个唯一key --> <field name="key">kanban_hire_date</field> <field name="arch" type="xml"> <kanban default_group_by="create_date"> <field name="create_date"/> <field name="name"/> <field name="email"/> <field name="employee_status"/> <templates> <t t-name="kanban-box"> <div class="oe_kanban_global_click"> <div class="oe_kanban_content"> <h4><field name="name"/></h4> <p>入职日期:<field name="create_date"/></p> <p><field name="email"/></p> <p>状态:<field name="employee_status"/></p> </div> </div> </t> </templates> </kanban> </field> </record>
2. 为每个视图配置独立的Action
接下来,你需要给每个Kanban视图绑定专属的Action,一定要明确指定对应的视图ID,不能让Odoo自动匹配:
对应部门看板的Action
<record id="action_hr_employee_kanban_department" model="ir.actions.act_window"> <field name="name">员工部门看板</field> <field name="res_model">hr.employee</field> <field name="view_mode">kanban</field> <!-- 直接指定要使用的视图ID --> <field name="view_id" ref="hr_employee_kanban_department"/> </record>
对应入职日期看板的Action
<record id="action_hr_employee_kanban_hire_date" model="ir.actions.act_window"> <field name="name">员工入职看板</field> <field name="res_model">hr.employee</field> <field name="view_mode">kanban</field> <!-- 指定另一个视图ID --> <field name="view_id" ref="hr_employee_kanban_hire_date"/> </record>
3. (可选)给Action添加菜单入口
如果需要在菜单里直接访问这两个看板,可以添加菜单项:
<menuitem id="menu_hr_employee_department_kanban" name="部门员工看板" parent="hr.menu_hr_root" action="action_hr_employee_kanban_department"/> <menuitem id="menu_hr_employee_hire_kanban" name="入职员工看板" parent="hr.menu_hr_root" action="action_hr_employee_kanban_hire_date"/>
常见坑点排查
如果配置后还是显示同一个视图,检查这几点:
- 有没有给每个Kanban视图设置唯一的
key?Odoo会用这个来区分同类型视图,没设置的话可能会优先加载第一个匹配的视图。 - Action的
view_id是不是写错了?要确保ref指向的是你创建的视图ID。 - 有没有升级模块?修改XML后必须升级对应模块,配置才会生效。
- 两个视图的
model是不是都设置成了hr.employee?别写错模型名。
按照这个步骤配置后,你打开两个Action应该就能看到完全不同的Kanban视图了!
内容的提问来源于stack exchange,提问作者Prashanth K
相关产品推荐
相关产品推荐

