2016-07-08 70 views
1
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"/> 

我在one2many(產品1,產品2)的值時,我選擇「產品2」 onchange_product_id返回2代替產品2的值的功能和它出現在字段'name'。 這只是當我在many2one,one2many ....關係中使用on_change時發生的,但是在char,int和float中,函數的值返回正確。OpenERP的V7 on_change函數返回號碼代替的值

我的問題是如何使用on_change函數獲得one2many的正確值?

感謝,

回答

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不是可瀏覽記錄。所以首先您需要瀏覽該記錄,然後需要獲取產品的名稱。

+0

但它給了我一個錯誤.... TypeError:'int'對象沒有屬性'__getitem__' – weelDaw

+0

對不起,我已經使用搜索,而不是瀏覽,在新的api搜索將給你可瀏覽。嘗試更新的答案 –

+0

Gotcha ... awesome ... :) – weelDaw