You need to enable JavaScript to run this app. Odoo 13自定义模块如何继承并修改hr.leave日历视图的date_stop属性
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 13自定义模块如何继承并修改hr.leave日历视图的date_stop属性

代码报错核心原因

编写的继承代码存在两个关键问题,会直接触发Odoo视图加载校验失败:

  • 没有通过精准路径定位原视图的calendar节点,直接完整重写calendar节点的全部属性,Odoo会将这段代码识别为“新增一个全新的calendar节点”,而非修改原有节点,最终触发节点结构冲突报错。
  • 重写节点时冗余写入了大量原视图已有的配置(比如js_class、form_view_id、event_open_popup等属性),这些重复配置会进一步加剧视图结构校验的异常。
正确实现方法

遵循Odoo视图继承规范:仅通过xpath定位到需要修改的原节点,针对要调整的date_stop属性做定向修改,不需要重写整个节点的全部原有配置。
实现前需完成两项前置校验:

  • 在模块的__manifest__.py中正确声明依赖hr_holidays,确保系统可以加载到待继承的日历视图资源。
  • 确认要绑定到date_stop的date_to_2字段,已经在hr.leave模型中定义完成,字段类型为DateTime,和原日历视图的时间字段类型要求匹配。
修正后的可运行参考代码
<!-- 自定义模块继承休假日历视图配置 -->
<record id="view_hr_leave_calendar_inherit" model="ir.ui.view">
    <field name="name">hr.leave.calendar.inherit</field>
    <field name="model">hr.leave</field>
    <field name="inherit_id" ref="hr_holidays.hr_leave_view_dashboard"/>
    <field name="arch" type="xml">
        <!-- 匹配原视图中唯一的calendar根节点 -->
        <xpath expr="//calendar" position="attributes">
            <!-- 仅修改需要调整的date_stop属性绑定关系 -->
            <attribute name="date_stop">date_to_2</attribute>
        </xpath>
    </field>
</record>
常见问题排查
  • 修改后如果出现日历时间显示异常,确认date_to_2字段的存储逻辑和原date_to的时区处理规则保持一致,避免出现时间偏移。
  • 如果加载时报外部ID引用错误,检查模块依赖的hr_holidays是否正确安装、版本匹配,不存在模块加载顺序异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 19:15:04