用onchange (Odoo)插入列表寄存器


class base(models.Model):
    _name = 'base'
    name = fields.Char("Name")
    c_id = fields.Many2one('base.ch')
class base_ch(models.Model):
    _name = 'base.ch'
    name = fields.Char("Name")
    q_ids = fields.One2many("base.q","c_id")

class base_q(models.Model):
    _name = "base.q"
    name = fields.Char("Name")
    c_id = fields.Many2one('base.ch',"Basec")

class base_h(models.Model):
    _name = "base.h"
    name = fields.Char("Name")
    select = fields.Selection([('a', 'A'), ('b', 'B')], "select")
    desc = fields.Char("Desc")

我有这些类,我想在基类中添加一个base_h类的字段,以树视图格式。
我需要在基类中做一个onchange函数,当选择c_id时,修改base_h类添加字段的名称字段,记录c_id.q_ids

我试着:

@api.onchange('ch_id')
def onchange_ch(self):
    if self.ch_id.q_ids:
        self.one2manyfield.name = [(6, 0, self.ch_id.q_ids)]
        #also with-> self.one2manyfield = [(6, 0, self.ch_id.q_ids)]

但是行不通

(6 0 (IDs)) 将id列表。

试试下面的代码。

@api.onchange('ch_id')
def onchange_ch(self):
    if self.ch_id and self.ch_id.q_ids:
        one2manyfield = [(6, 0, self.cht_id.q_ids.ids)]

这是起作用的函数

@api.onchange('ch_id')
def onch_ch(self):
    valors = []
    for r in self.ch_id.q_ids:
        register = {'name': r.name}
        valors.append(register)
    self.one2manyfield = valors

最新更新