one2many包含one2many如何设置值

时间:2017-12-24 08:10:19

标签: odoo odoo-10

我想在onc​​hange值

中直接添加以下模型

数据来自其他模型

我的模特

A类:

_name = 'budget.budget'
main_materials_list = fields.One2many(comodel_name='budget.main.material', inverse_name='budget_id', string=u'A')

@api.onchange('suite_series')
def onchange_suite_series(self):
    self.main_materials_list = self._materialValue()

def _materialValue(self):
    page = []
    for item in self.suite_series.main_material_ids:
        product_ids = []
        data = {
            'product_id':self.main_materials_list.product_ids
        }

        for val in item.product_id:
            product_item = {
                'product_id': val.product_id.id
            }
            product_ids.append((0, 0, product_item)) 

        data.update({'product_ids': product_ids})
        page.append((0, 0, data))
    return page

Class B:
    _name = 'budget.main.material'
    product_ids = fields.One2many(comodel_name='budget.material', inverse_name='main_id', string=u'B')

Class C:
    _name = 'budget.material'
    product_id = fields.Many2one(comodel_name='product.product', string=u'C')

使用上面的方法,然后第二个one2many分配不成功!

1 个答案:

答案 0 :(得分:0)

遗憾的是,您无法在onchange事件中执行此操作,这与webclient处理从服务器返回的结果的方式有关。

Odoo会忽略在该视图中没有相应字段的所有值,因此当您将值传递给第二个时,他将无法在该视图中找到任何字段。

我没有试过这个,但我认为它也行不通。尝试将嵌入式树放在第一个one2many中,将另一个嵌入式树放入第二个one2many字段中,并包含要在onchange事件中传递的所有字段。

为什么我认为它不起作用因为odoo不会在第一个树视图中呈现第二个树视图。如果这不起作用,你需要考虑别的事情。