假设我有两个模型。
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))])