Вы не опубликовали полное сообщение об ошибке, но, глядя на ваш код, я предполагаю, что это вызывает ошибку:
('line_mission', '=', mission.line_mission.id),
Вы определили line_mission как One2many, поэтому в любое время набор записей One2many имеет болееодна запись, доступ к «.id» даст вам эту единственную ошибку.
Я предполагаю, что вам нужно знать, есть ли какие-либо другие записи hr.employee.mission с перекрытием даты и где сотрудник находится на одномlines.
Вы можете использовать один SQL-запрос с соединениями, но если бы я делал это в поиске, я бы, вероятно, сделал бы два поиска, чтобы Odoo не создал потенциально большой список родительской записи.
# find any other missions that overlap our dates.
overlapping_missions = self.search([
('mission_start_date', '<=', mission.mission_end_date),
('mission_end_date', '>=', mission.mission_start_date),
('id', '!=', mission.id)])
if overlapping_missions:
# Are there any lines for these overlapping missions that have any
# of the same employees as we have for this mission (note list comprehension).
duplicates = self.env['line.employee.mission'].search_count([
('line_mission', 'in', overlapping_parents.ids),
('employee_id', 'in', [l.employee_id.id for l in mission.line_mission])
])
if duplicates:
raise ValidationError(...)
Я дома, поэтому не проверял это, но это должно быть примерно правильно.