Вы можете использовать вычисленное поле many2many. Метод вычисления вычислит все формы оценки и создаст набор записей, содержащий всех интервьюеров, которые отображаются во всех формах. Затем заполните поле many2many этим набором записей.
Это будет выглядеть примерно так:
def _compute_interviewer_ids(self):
for record in self:
interviewer_ids = []
for appraisal_form in record.survey_request_ids:
interviewer_ids.append(appraisal_form.interviewer_id.id)
record.interviewer_ids = self.env['interviewer.model'].browse(interviewer_ids)
interviewer_ids = fields.Many2many('interviewer.model', compute='_compute_interviewer_ids', string='Interviewers')
Редактировать: здесь представлена целая модель и ее подмодель, так что вы можете увидеть ее в контексте. Протестировано в v12.
from odoo import models, fields, api
class ExampleModel(models.Model):
_name = 'example_module.example_model'
_description = 'Example Model'
def _compute_interviewer_ids(self):
for record in self:
interviewer_ids = []
for appraisal_form in record.submodel_ids:
interviewer_ids.append(appraisal_form.partner_id.id)
record.interviewer_ids = self.env['res.partner'].browse(interviewer_ids)
name = fields.Char()
description = fields.Text()
submodel_ids = fields.One2many('example_module.example_sub_model', 'examplemodel_id', 'SubModel Records')
interviewer_ids = fields.Many2many('res.partner', compute='_compute_interviewer_ids', string='Interviewers')
class ExampleSubModel(models.Model):
_name = 'example_module.example_sub_model'
_description = 'Example Sub-model'
name = fields.Char()
examplemodel_id = fields.Many2one('example_module.example_model', 'Parent Record')
partner_id = fields.Many2one('res.partner', 'Partner')