在Odoo 10中重新创建One2Many关系

时间:2017-10-19 00:53:18

标签: python-2.7 openerp odoo-10

我有一个名为Quotes的新的完全自定义模块:

A类:产品(名称(文字),描述(文字),存款(布尔),子产品(指向B类的one2man))

B类:子产品(名称(文字),描述(文字),因子1(浮动),因子2(浮动),产品(指向A类的许多人))

C类:行情(名称(文本),描述(文本),日期(日期时间),line_quote(指向D类的one2many))

D类:Line_Products(名称(文字),描述(文字),产品(指向A类的许多人),存款(布尔),def_onchange(根据产品填写所有字段),Line_Sub-产品(one2many指向Class E),引用(许多人指向C类))

E类:Line-Sub-Products(名称(文本),描述(文本),factor1(float),factor2(float),product(指向D类的many2one),子产品(many2one指向B类), def_onchange(根据子产品填写所有字段))

根据A类和B类之间的关系选择D类产品时,我需要自动填写E类

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

好一会儿,我找到了解决方法:

首先,在C类中,创建一个字段product_id(指向类A的many2one)

在D类和E类中,不需要“ def_onchange”,因此将其删除。我们将从C类开始。

然后,在类C上,仅创建一个根据特定需求创建字典的方法:

@api.multi
def action_load(self):
    if self.product_id:
        vals_product={'Line_Products':self.product_id.name,'product_id':self.product_id.id,'deposit':True,'descripcion':self.product_id.description,'quote_id':self.id}
        # Create product vals
        new_product = self.env['classD.model'].create(vals_product)
        # Then loop over items in Product
        for Sub-Product in self.product_id.Sub-Products_ids:
            vals_Sub-Product = {'cober_id':Sub-Product.ids[0],'name':Sub-Product.name,'description':Sub-Product.description,'factor1':Sub-Product.factor1,'factor2':Sub-Product.factor2,'subproducts':Sub-Product.id,'product_id':self.product_id.id}
            # Create Sub-Product vals
            new_Sub-Product = self.env['classE.model'].create(vals_Sub-Product)
        # Browse for Product ID
        self.env['classD.model'].browse(new_product.id).onchange_result()
        return
    else:
        return

希望任何人都觉得有帮助。