You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义模块中如何为hr.employee配置不同看板视图?

解决Odoo自定义看板视图不显示的问题

嘿,我明白你现在卡在哪了——你给hr.employee加了自定义看板视图,但打开动作窗口时还是显示原生的看板,对吧?这其实是因为你的动作窗口(ir.actions.act_window)没明确指定要使用你的新视图,Odoo默认会加载该模型优先级最高的看板视图,所以你的自定义视图被“藏”起来了。

下面是具体的解决步骤,分两步走:

1. 确认自定义看板视图的定义正确

首先,确保你的自定义看板视图已经正确定义,并且设置了比原生视图更高的优先级。比如你的视图XML应该是这样的:

<record model="ir.ui.view" id="hr_birthdays_kanban_view">
    <field name="name">hr.employee.birthdays.kanban</field>
    <!-- 模型还是hr.employee,因为你是继承而非新建 -->
    <field name="model">hr.employee</field>
    <field name="arch" type="xml">
        <!-- 这里是你的自定义看板结构,和原生视图做区分 -->
        <kanban>
            <!-- 只加载你需要的字段,比如生日相关 -->
            <field name="name"/>
            <field name="birthday"/>
            <field name="department_id"/>
            <templates>
                <t t-name="kanban-box">
                    <div class="oe_kanban_global_click">
                        <div class="oe_kanban_content">
                            <h4><field name="name"/></h4>
                            <p class="text-muted">部门: <field name="department_id"/></p>
                            <p class="text-primary">生日: <field name="birthday"/></p>
                        </div>
                    </div>
                </t>
            </templates>
        </kanban>
    </field>
    <!-- 设置比原生视图更高的优先级,原生一般是10,设为20就能优先加载 -->
    <field name="priority" eval="20"/>
</record>

2. 修改动作窗口,明确指定使用自定义视图

接下来要调整你的ir.actions.act_window记录,直接指定默认使用你的自定义看板视图,而不是依赖Odoo的自动选择。修改后的代码如下:

<record model="ir.actions.act_window" id="hr_birthdays.action_window">
    <field name="name">Today Birthdays</field>
    <field name="res_model">hr.employee</field>
    <field name="priority" eval="1"/>
    <!-- 可以在这里加过滤条件,比如只显示今天生日的员工 -->
    <field name="context">{"search_default_today_birthdays": True}</field>
    <!-- 清空原有视图关联,添加我们的自定义看板视图 -->
    <field name="view_ids" eval="[(5, 0, 0), (0, 0, {'view_mode': 'kanban', 'view_id': ref('hr_birthdays.hr_birthdays_kanban_view')})]"/>
    <!-- 指定允许的视图模式,把kanban放在第一位 -->
    <field name="view_mode">kanban,tree,form</field>
    <!-- 强制默认打开自定义看板视图 -->
    <field name="default_view_id" ref="hr_birthdays.hr_birthdays_kanban_view"/>
</record>

关键说明:

  • view_ids字段的eval语法:(5,0,0)是清空动作窗口原有的视图关联,(0,0, {...})是添加新的视图绑定,指定view_mode为kanban,并关联你的自定义视图ID。
  • default_view_id直接指向你的看板视图ID,确保用户打开动作窗口时默认显示它。
  • 如果你的自定义视图优先级已经设得比原生高,其实也可以不用view_ids,但明确指定会更稳妥,避免其他模块的视图干扰。

最后,记得升级你的自定义模块,并且清除浏览器缓存(Odoo经常会缓存旧视图),再打开动作窗口就能看到你的自定义看板了!

内容的提问来源于stack exchange,提问作者Prashanth K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:31:34