Odoo 13 TypeError:strTime()参数1必须是str,而不是datetime.dateE

Odoo 13 TypeError:strTime()参数1必须是str,而不是datetime.dateE,odoo,Odoo,类出生日期(models.Model): 错误: Odoo Server Error Traceback (most recent call last): File "/odoo/odoo-server/odoo/http.py", line 619, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/odoo/odoo-server/odoo/http.py

类出生日期(models.Model):

错误:


Odoo Server Error

Traceback (most recent call last):

File "/odoo/odoo-server/odoo/http.py", line 619, in _handle_exception

return super(JsonRequest, self)._handle_exception(exception)

File "/odoo/odoo-server/odoo/http.py", line 309, in _handle_exception

raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])

File "/odoo/odoo-server/odoo/tools/pycompat.py", line 14, in reraise

raise value

File "/odoo/odoo-server/odoo/http.py", line 664, in dispatch

result = self._call_function(**self.params)

File "/odoo/odoo-server/odoo/http.py", line 345, in _call_function

return checked_call(self.db, *args, **kwargs)

File "/odoo/odoo-server/odoo/service/model.py", line 93, in wrapper

return f(dbname, *args, **kwargs)

File "/odoo/odoo-server/odoo/http.py", line 338, in checked_call

result = self.endpoint(*a, **kw)

File "/odoo/odoo-server/odoo/http.py", line 910, in __call__

return self.method(*args, **kw)

File "/odoo/odoo-server/odoo/http.py", line 510, in response_wrap

response = f(*args, **kw)

File "/odoo/odoo-server/addons/web/controllers/main.py", line 1320, in call_kw

return self._call_kw(model, method, args, kwargs)

File "/odoo/odoo-server/addons/web/controllers/main.py", line 1312, in _call_kw

return call_kw(request.env[model], method, args, kwargs)

File "/odoo/odoo-server/odoo/api.py", line 387, in call_kw

result = _call_kw_multi(method, model, args, kwargs)

File "/odoo/odoo-server/odoo/api.py", line 374, in _call_kw_multi

result = method(recs, *args, **kwargs)

File "/odoo/odoo-server/odoo/models.py", line 6070, in onchange

record._onchange_eval(name, field_onchange[name], result)

File "/odoo/odoo-server/odoo/models.py", line 5871, in _onchange_eval

method_res = method(self)

File "/odoo/odoo-server/addons/hr/models/hr_employee.py", line 87, in _onchange_birth_date

('married', 'Married'),

TypeError: strptime() argument 1 must be str, not datetime.dateE

看看Python日期时间模块文档

正如错误所示,
strtime
方法的第一个参数应该是格式字符串。因此,只需像下面那样恢复您的参数

d1 = datetime.strptime("%Y-%m-%d", self.birthday).date()

自Odoo 11以来,date和datetime类型的字段是date或datetime类型的对象,不再是字符串。
所以你不必使用这个:

d1 = datetime.strptime(self.birthday, "%Y-%m-%d").date()
只需使用此选项:
d1=self.birth
d1=datetime.strtime(str(self.birth),%Y-%m-%d”).date()

self.birth
已经是
Date
类型,因此您不需要使用
DateTime
模块对其进行转换

您可以将代码缩减为一行:

self.age = relativedelta(fields.Date.today(), self.birthday).years

我已更改并重试,但仍然显示相同的错误,因为正如@m0r7y所建议的,Odoo 13将日期字段存储为日期对象。所以基本上你不需要strtime。您好,欢迎来到Stack Overflow。您需要添加一些注释来解释这是如何解决问题的,以及您到底更改了什么以及为什么。虽然这段代码可能会解决问题,但一个好的答案也应该解释它的作用和帮助方式?您可以避免将日期转换为
str
,然后再转换回
date
self.age = relativedelta(fields.Date.today(), self.birthday).years