Odoo安装Mediocre DHX Gantt甘特图时出现datetime类型运算报错
Odoo安装Mediocre DHX Gantt甘特图模块类型错误解决方案
报错根因
该错误是模块代码中混用datetime.date(日期类型)和datetime.datetime(日期时间类型)做减法运算导致的。Odoo中纯日期字段返回date类型,带时分秒的日期时间字段返回datetime类型,模块未做类型统一就直接计算时间差,触发类型不兼容错误。
可行解决方案
方案1:手动修复模块代码
- 定位到模块中甘特图数据计算相关的代码文件,通常是
models目录下处理甘特图数据返回的方法(常见方法名如_get_gantt_data、gantt_view) - 对参与时间差计算的两个值统一类型,可选两种处理方式:
- 统一转为
datetime类型:用datetime.datetime.combine(日期值, datetime.time.min)将date类型转为同一天0点的datetime类型 - 统一转为
date类型:用日期时间值.date()将datetime类型转为对应日期的date类型
- 统一转为
- 代码示例:
原错误代码逻辑:
# 此处start_date/end_date可能一个是date,一个是datetime,直接相减报错 duration = end_date - start_date
修复后代码:
from datetime import datetime # 统一转成datetime类型再计算 if isinstance(start_date, datetime.date) and not isinstance(start_date, datetime.datetime): start_date = datetime.combine(start_date, datetime.time.min) if isinstance(end_date, datetime.date) and not isinstance(end_date, datetime.datetime): end_date = datetime.combine(end_date, datetime.time.min) duration = end_date - start_date
方案2:校验模块版本适配性
- 确认你安装的Mediocre DHX Gantt模块版本和当前Odoo版本完全匹配,部分旧版模块未适配Odoo 15及以上版本的时间字段返回规则,下载对应你Odoo版本的最新模块安装包重新安装即可解决。
方案3:检查甘特图绑定字段配置
- 进入甘特图视图配置页,检查绑定的开始时间、结束时间字段类型,确保两个字段同为日期类型,或者同为日期时间类型,不要混用两种类型的字段绑定到甘特图的起止时间配置项。
报错截图

内容的提问来源于stack exchange,提问作者Omar Chakroun
相关产品推荐
相关产品推荐

