在 Datetime odoo 11 中设置时间默认值

Set time default in Datetime odoo 11

我试图在 odoo create 函数中设置默认时间出现以下错误:

TypeError: replace() 没有关键字参数

代码:

@api.model
def create(self, values):
    if 'deadline' in values:
        values['deadline'].replace(hour=23, minute=59, second=59, microsecond=999999)
    line = super(SurveyUserInputInherit, self).create(values)    
    return line

提前致谢。

Odoo 将日期时间字段存储为字符串。所以如果你想替换 create 函数中的时间,你需要先将它转换为日期时间。您可以使用函数 fields.Datetime.from_string 完成它,然后再次将其转换为字符串,使用 fields.Datetime.to_string 或只是 str

所以在你的情况下,应该这样做:

from odoo import fields

@api.model
def create(self, values):
    if 'deadline' in values:
        deadline = fields.Datetime.from_string(values['deadline'])
        deadline = deadline.replace(hour=23, minute=59, second=59)
        values['deadline'] = fields.Datetime.to_string(deadline)
    line = super(SurveyUserInputInherit, self).create(values)    
    return line

顺便说一句,odoo 不存储微秒,因此无需替换。