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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:33:30