是否可以将datetime字段转换为日期字段进行日期比较?(Odoo 13)



假设我有两个模型。

model_a.py with 2 fields:

name = fields.Many2one('hr.employee', 'Employee name')
start_datetime = fields.Datetime('Datetime working')

我基于这些字段创建了4条记录。在显示用户树视图的结果如下:

Employee name     Datetime working
A                 10/26/2021 07:00:00
B                 10/26/2021 08:00:00
C                 10/26/2021 09:00:00
D                 10/27/2021 07:00:00

model_b.py with 1 field:

start_date = fields.Date('Date working')

然后我选择on: 10/26/2021作为start_date字段。

我想在10/26/2021上加载所有记录,而不通过model_a.py中datetime字段的特定时间,通过日期比较:

@onchange (start_date)

我知道Date字段只能和Date对象比较。

我试过这样转换:

start_datetime = fields.Datetime('Datetime working')
get_date = start_datetime.date()

但是我得到了这个错误:

.....
[Previous line repeated 317 more times]
RecursionError: maximum recursion depth exceeded while calling a Python object

注意:我仍然想保持Datetime字段的格式为'Datetime'

请帮忙!谢谢你!

最后,我解决了我的需求。使用combine和timedelta在@onchange.

域中添加额外的一天作为两个条件在model_b.py:

from datetime import timedelta
...
@api.onchange('get_date')
def _get_date(self):
for rec in self:
if rec.start_date:
time = datetime.min.time()
date = rec.get_date
list_data = self.env['model.a'].search([('start_datetime', '>', datetime.combine(date,time)),
('start_datetime', '<', date + timedelta(days=1))])