OpenERP v7 on_change函数返回数字而不是值

时间:2016-07-08 09:17:52

标签: python openerp openerp-7

 def onchange_product_id(self, cr, uid, ids, product_id, context=None):
     val = {
         'name': product_id,
     }

 return {'value': val}


    <field name="product_id" on_change="onchange_product_id(product_id, context)"/>
    <field name="name"/>

当我选择&#39; product2&#39;时,我在one2many(product1,product2)中有值。函数onchange_product_id返回值2而不是product2,它出现在字段'name'上。 这只发生在我在many2one,one2many ....关系中使用on_change时,但在char,int和float中,函数的值返回正确。

我的问题是如何使用on_change函数获取one2many的正确值?

谢谢,

1 个答案:

答案 0 :(得分:2)

你需要做类似的事情,

def onchange_product_id(self, cr, uid, ids, product_id, context=None):
    product = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
    val = {
         'name': product and product.name or '',
    }

    return {'value': val}

因为 product_id 包含且不是可浏览记录的ID。首先,您需要浏览该记录,然后需要获取产品名称。