如何将值从 one2many 字段传递到相同形式的不同模型中的另一个字段?下面给出的表格视图图像(ial)
how to pass values from a one2many field to another field in different model of same form? form view image given below (ial)
ial
one2many field name: survey_request_ids
model of one2many field : hr_evaluation.evaluation
Field name of 'Interviewer' inside one2many : user_id
model of 'Interviewer' inside one2many : hr.evaluation.interview
我想在 'Appraisal Deadline' 下面创建一个新字段 'Interviewer'
它将具有以下字段 'Interviewer' 中的值,该字段位于 one2many.
中
我试过这些,
from openerp import models,fields,api
class hr_evaluation_interview(models.Model):
_inherit = 'hr.evaluation.interview'
@api.onchange('user_id')
def _onchange_user_id(self):
rec = self.env['hr_evaluation.evaluation'].search([('id','=',
self.evaluation_id.id)])
rec.update({
'interviewer_ids': [(4,self.user_id.id)]
})
class hr_evaluation_inherit(models.Model):
_inherit = 'hr_evaluation.evaluation'
_columns = {
'interviewer_ids': fields.many2many('res.users',
string='Interviewer',readonly=True)
}
您可以使用计算的 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')
ial
one2many field name: survey_request_ids
model of one2many field : hr_evaluation.evaluation
Field name of 'Interviewer' inside one2many : user_id
model of 'Interviewer' inside one2many : hr.evaluation.interview
我想在 'Appraisal Deadline' 下面创建一个新字段 'Interviewer' 它将具有以下字段 'Interviewer' 中的值,该字段位于 one2many.
中我试过这些,
from openerp import models,fields,api
class hr_evaluation_interview(models.Model):
_inherit = 'hr.evaluation.interview'
@api.onchange('user_id')
def _onchange_user_id(self):
rec = self.env['hr_evaluation.evaluation'].search([('id','=',
self.evaluation_id.id)])
rec.update({
'interviewer_ids': [(4,self.user_id.id)]
})
class hr_evaluation_inherit(models.Model):
_inherit = 'hr_evaluation.evaluation'
_columns = {
'interviewer_ids': fields.many2many('res.users',
string='Interviewer',readonly=True)
}
您可以使用计算的 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')