Odoo 15中如何正确添加时间字段?现有方法存异常及导入问题
Odoo 15 时间字段配置异常问题
我在Odoo 15模型中添加时间字段时使用了以下代码:
Python 模型代码
time = fields.Float('Time')
视图配置代码
<field name="time" widget="float_time"/>
但遇到了以下问题:
- 输入
10:50这类时间格式时提示无效,只能输入10.50这样的浮点数格式 - 保存后报表中显示为
10:39,与输入的数值不符 - 导入包含时间数据的Excel表格时失败,出现导入报错
问题原因与解决方法
1. 字段与组件的逻辑误解
float_time组件是配合fields.Float使用的,核心逻辑是将浮点数作为总小时数,转换为HH:MM格式显示:
- 输入
HH:MM时,系统会自动计算为小时 + 分钟/60的浮点数存储(比如10:50会存为10 + 50/60 ≈10.8333) - 显示时,浮点数会反向转换为HH:MM(比如10.8333显示为10:50)
你输入10.50后显示10:39,说明实际输入的是10.65(0.65×60≈39分钟),这是组件的正常转换逻辑,并非异常。
2. 解决输入格式限制问题
若无法输入HH:MM格式,可尝试在视图字段中添加格式配置:
<field name="time" widget="float_time" options="{'format': 'HH:mm'}"/>
配置后组件应支持直接输入10:50这类格式,自动转换为对应浮点数存储。
3. Excel导入问题处理
Excel中的时间格式需转换为Odoo可识别的格式:
- 若Excel中是HH:MM格式,先将单元格转换为数值格式(计算为总小时数,比如10:50转成10.8333)再导入
- 导入时在映射步骤中确认字段对应关系,确保数值被正确识别
备选方案:使用fields.Time字段
如果需求是记录具体时间点而非时长,建议直接使用fields.Time类型,无需额外组件:
time = fields.Time('Time')
视图中直接引用字段即可:
<field name="time"/>
该字段原生支持HH:MM格式输入、显示,导入Excel时也能直接识别时间格式,适配性更强。
内容的提问来源于stack exchange,提问作者Pola Pola
相关产品推荐
相关产品推荐

