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

Odoo V17自定义模型日历视图弹窗添加自定义字段方法咨询

解决Odoo V17日历弹窗添加自定义字段的问题

1. 调整日历视图的XML配置

日历弹窗的字段来源是你定义的日历视图中声明的字段,而非直接通过search_read传递。你需要在自定义模型的日历视图XML里,明确添加要在弹窗显示的自定义字段:

<record id="your_model_calendar_view" model="ir.ui.view">
    <field name="name">your.model.calendar.view</field>
    <field name="model">your.model</field>
    <field name="arch" type="xml">
        <calendar date_start="start_date" date_stop="end_date" color="color_field">
            <!-- 添加需要在弹窗显示的自定义字段 -->
            <field name="custom_field_1"/>
            <field name="custom_field_2"/>
            <field name="custom_field_3"/>
            <!-- 保留原有日历视图依赖的核心字段 -->
            <field name="start_date"/>
            <field name="end_date"/>
            <field name="color_field"/>
        </calendar>
    </field>
</record>

只要在<calendar>标签内声明的字段,都会被弹窗的popoverFieldNodes捕获并渲染,Odoo V17默认会将视图内的字段纳入弹窗候选范围,无需额外配置popover属性。

2. 确认模型字段权限

确保你添加的自定义字段已在对应权限组(ir.model.access)中设置为可读权限,否则即使视图里声明了字段,弹窗也无法获取并显示字段值。

3. 自定义弹窗布局(可选)

如果需要更灵活的弹窗样式或逻辑(比如字段分组、条件显示),可以继承web.CalendarCommonPopover.body模板扩展内容:

<template id="custom_calendar_popover_body" inherit_id="web.CalendarCommonPopover.body">
    <xpath expr="//div[hasclass('o_calendar_popover_body')]" position="inside">
        <!-- 自定义字段1的显示逻辑 -->
        <t t-if="record.custom_field_1.raw_value">
            <div class="o_field_row">
                <span class="o_field_label">自定义字段1:</span>
                <span class="o_field_value" t-esc="record.custom_field_1.value"/>
            </div>
        </t>
        <!-- 自定义字段2的显示逻辑 -->
        <t t-if="record.custom_field_2.raw_value">
            <div class="o_field_row">
                <span class="o_field_label">自定义字段2:</span>
                <span class="o_field_value" t-esc="record.custom_field_2.value"/>
            </div>
        </t>
    </xpath>
</template>

4. 验证配置

完成上述操作后:

  • 升级你的自定义模块
  • 清除浏览器缓存(或使用隐私模式打开页面)
  • 打开日历视图,点击事件查看弹窗是否显示新添加的字段

为什么之前的search_read配置不生效?

Odoo日历视图的弹窗数据由视图控制器统一获取,它会自动读取视图中声明的所有字段。手动在search_read中添加字段不会被弹窗渲染逻辑识别,因为弹窗是基于视图的字段节点来渲染,而非直接依赖search_read的返回结果。

内容的提问来源于stack exchange,提问作者Florian Genicq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:47:11