Odoo 16自定义模块日历视图定义无效报错求助
Odoo 16自定义模块日历视图创建失败问题
问题场景
在自定义Odoo 16模块中,尝试创建如下日历视图:
<record id="tc_work_day_calendar" model="ir.ui.view"> <field name="name">tc.work.day.calendar</field> <field name="model">tc.work.day</field> <field name="type">calendar</field> <field name="arch" type="xml"> <calendar date_start="date_start" date_end="date_end" color="company_id" mode="month"> <field name="date_start"/> <field name="date_end"/> <field name="company_id"/> </calendar> </field> </record>
安装/升级模块时出现以下错误:
View definition tc.work.day.calendar invalid in lgr_TC/views/work_day.xml
View error context:
'-no context-'
已尝试的无效操作
- 注释日历视图后,表单、树状及搜索视图可正常运行,但无法使用日历视图
- 卸载并重新安装模块
- 移除
type字段 - 与正常运行的模块对比代码(仅模块名称、视图名称等不同)
可行解决方案
检查字段类型与权限
- 确认
tc.work.day模型中的date_start、date_end字段为datetime类型,Odoo日历视图要求起始/结束字段必须是时间类型,不能是date类型。 - 确保
company_id字段存在且为many2one类型,同时当前用户拥有该字段的读取权限。
- 确认
修正视图结构
- Odoo 16的日历视图中,
color属性对应的字段需正确声明,可尝试添加event_open_popup属性或调整字段顺序:<calendar date_start="date_start" date_end="date_end" color="company_id" mode="month" event_open_popup="true"> <field name="company_id"/> <field name="date_start"/> <field name="date_end"/> </calendar>
- Odoo 16的日历视图中,
排查视图冲突
- 确认没有其他模块对
tc.work.day模型的日历视图进行继承或重写,导致视图定义冲突。可在开发者模式中查看视图的继承关系。
- 确认没有其他模块对
验证XML语法
- 检查XML文件是否存在语法错误,比如未闭合标签、引号不匹配等,可使用XML校验工具排查问题。
关联视图到动作菜单
- 确保已将该日历视图添加到对应的窗口动作中,示例代码:
<record id="action_tc_work_day" model="ir.actions.act_window"> <field name="name">Work Days</field> <field name="res_model">tc.work.day</field> <field name="view_mode">tree,form,calendar</field> <field name="view_id" ref="tc_work_day_calendar"/> </record>
- 确保已将该日历视图添加到对应的窗口动作中,示例代码:
内容的提问来源于stack exchange,提问作者l_grueni
相关产品推荐
相关产品推荐

