xml - how to pass values from a one2many field to another field in different model of same form? form view image given below (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
I want to create a new field 'Interviewer' below 'Appraisal Deadline' which will have values from the below field 'Interviewer' which is in a one2many.
I tried like these,
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')
推荐阅读
- neo4j - Neo4J Desktop 1.1.8 安装错误(社区版)
- mysql - 在 MySQL 中使用 Group by 和 Order by
- android - Android:ACCESS_COARSE_LOCATION 权限来源
- java - JAVA SWING:默认表模型中使用的向量无法通过 for 循环添加 addElement()
- python - 使用 tf.while_loop 对张量进行切片
- innodb - 如何克服 Google-Cloud MySQL5.7 第二代上的 Row size too large (> 8126) 错误
- python - 我可以使用 sublime Text 构建系统在 docker 容器中执行 manage.py 命令吗?
- javascript - 如何在nodejs上使用对象json数据进行嵌套循环
- ios - 开始开发 iOS 应用程序 (Swift) - 添加按钮不再起作用
- python - 在 1 个串行上结合 2 个伺服器和传感器