odoo时间和日期字段默认值不对,出现时差问题

23 篇文章 0 订阅
23 篇文章 1 订阅

最近踩坑才发现odoo的时间和日期字段用在字段的默认值时需要注意一个地方, 如果没注意,时间默认值可能会出现默认时间不对的问题

如果是时间和日期字段默认值可以使用fields.Date.today和fields.Datetime.now作为默认值,示例如下:

field_date = fields.Date(default=fields.Date.today)
field_datetime = fields.Datetime(default=fields.Datetime.now)

这样就不需要再定义函数使用datetime库去获取了日期和时间默认值了,但是需要注意的是:如果你的默认值写成了下面这样:

field_date = fields.Date(default=fields.Date.today())
field_datetime = fields.Datetime(default=fields.Datetime.now())

细心的朋友肯定一眼就看出问题所在了 , 如果你使用的是下面这种fields.Date.today()和fields.Datetime.now()这种带括号的, 你会发现你的日期和时间字段会出现默认值不对的情况

原因是:带括号fields.Date.today()和fields.Datetime.now()的是调用的方法,而这个方法时获取系统启动的日期和时间, 而不是当前时间和日期,这就是问题所在了, 而不带括号的fields.Date.today和fields.Datetime.now是调用的属性,两者完全是不一样的,调用属性,他会在你创建时才获取时间和日期,而调用方法的方式,你生成模型的时候,就已经调用写入默认值了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值