触发了Onchange但没有用视图上的值填充字段(Odoo)

时间:2017-04-17 04:01:24

标签: python openerp odoo-8 odoo-9 odoo-10

我已经创建了onchange函数,其目标是在笔记本工作表视图上自动填充值。

我的功能正常,但它没有填写视图中的字段。

我该怎么做才能做到这一点?

这是我从pdb得到的:

enter image description here

这就是我想要的价值,但它没有填写视图上的字段

这是py:

@api.multi
@api.model
@api.onchange('employee_id')
def onchange_lines(self):
    import pdb;pdb.set_trace()
    if self.employee_id:
        check = self.env['hr.employee'].sudo().search([('id','=',self.employee_id.id)])
        for empy in check:
            if empy.id:
                res = {}
                vals = []
                if not empy:
                    vals.
                    res.update({'self.job_id':'', 'self.nik':''})
                else:
                    vals.append({'self.job_id':empy.job_id, 'self.nik':empy.identification_id})
                    res.update(vals)
            return res

以下是字段的xml:

<!-- language: xml -->
<notebook>
    <page string="Employees">
        <field name="employee_ids">
            <tree string="Employees" editable="bottom">
                <field name="nik"/>
                <field name="employee_id"/>
                <field name="job_id"/>
                <field name="ovrtm"/>
                <field name="ttalmtp"/>
            </tree>
        </field>
    </page>
</notebook>

1 个答案:

答案 0 :(得分:3)

在onchange的新的api中你可以直接在记录集对象中赋值。

您可以按照以下代码进行操作。

@api.onchange('employee_id')
def onchange_lines(self):
    import pdb;pdb.set_trace()
    if self.employee_id:
        check = self.env['hr.employee'].sudo().search([('id','=',self.employee_id.id)])
        for empy in check:
            if empy.id:
                res = {}
                vals = []
                if not empy:
                    self.job_id=False
                    self.nik=False
                else:
                    self.job_id=empy.job_id
                    self.nik=empy.identification_id

这可能会对你有帮助。