如何在self.env odoo中传递id?

时间:2016-06-02 08:51:31

标签: openerp odoo-8

' products.template'表我创建了三个字段宽度,长度和gsm。现在我想在' mrp'中检索它。 table.First我将从mrp物料清单中获取ID并将其分配给名为prod的变量。 ' mrp.bom.line'表包含产品id.So通过迭代器我想传递存储在mrp物料清单表中的产品的ID,以检索存储在product.template表中的宽度,长度和gsm的值。我收到错误programming error can't adapt type 'product.product'

@api.multi
def _compute_rim_weight(self):
    bill_of_materials_id=[1,2,3]
    prod = self.env['mrp.bom.line'].browse(bill_of_materials_id)
    for i in prod:
            j = self.env['product.template'].browse(i.product_id)
            self.rim_weight = (j.width * j.length * j.gsm)/20000        
    return self.rim_weight

1 个答案:

答案 0 :(得分:2)

  

在ODOO中,浏览 id 而非对象

所以只需用浏览(i。 product_id.id )替换浏览(i。 product_id ),如下所示:

j = self.env['product.template'].browse(i.product_id.id)

如果product.templatemodel :mrp.bom.line的{​​{1}}有**很多关系**,我还有另一件事,你甚至不需要调用浏览。

直接拨打 line.product_id.width line.product_id.length line.product_id.gsm ,如下所示:

@api.multi
def _compute_rim_weight(self):
    bill_of_materials_ids=[1,2,3]
    bom_lines = self.env['mrp.bom.line'].browse(bill_of_materials_ids)
    for line in bom_lines:            
            self.rim_weight = (line.product_id.width * line.product_id.length * line.product_id.gsm)/20000        
    return self.rim_weight


@api.one
def _compute_rim_weight(self):
    rim_weight   =0
    for line in self.bom_id.bom_line_ids:            
            rim_weight+ = (line.product_id.width * line.product_id.length * line.product_id.gsm)/20000        
    self.rim_weight =rim_weight