2016-11-08 65 views
1
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的记录时插入列表注册与onchange(Odoo)

我想:

@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)] 

但它不起作用

+0

基础上创建一个One2many场base_h和平变化我都试过两件事情的功能。 1.-(self.one2many_field = self.c_id.q_ids)和2.-(self.one2many_field = [(6,0,self.c_id.q_ids)]) – josemi

回答

0

这是工作

@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 
0

(6,0,[ID])将采取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)] 
+0

不能这样工作,但谢谢你的答案 – josemi