Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何将值从一个字段传递到同一形式的不同模型中的另一个字段?下面给出的表单视图图像(ial)_Xml_Python 2.7_Odoo 8 - Fatal编程技术网

Xml 如何将值从一个字段传递到同一形式的不同模型中的另一个字段?下面给出的表单视图图像(ial)

Xml 如何将值从一个字段传递到同一形式的不同模型中的另一个字段?下面给出的表单视图图像(ial),xml,python-2.7,odoo-8,Xml,Python 2.7,Odoo 8,我想在“评估截止日期”下方创建一个新字段“面试官” 其中将包含以下字段“面试官”中的值,该字段位于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(sel

我想在“评估截止日期”下方创建一个新字段“面试官” 其中将包含以下字段“面试官”中的值,该字段位于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')

您可以使用一个计算的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')

这不是onchange方法,而是compute方法。我测试了代码,它在我这边运行得很好。我将用整个模型和子模型编辑我的帖子,供你参考。很好,很高兴你让它工作了!你能接受我的回答吗?这不是一个onchange方法,它是一个compute方法。我测试了代码,它在我这边运行得很好。我将用整个模型和子模型编辑我的帖子,供你参考。很好,很高兴你让它工作了!你能接受我的回答吗?