2016-07-08 18 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"/> 

I den Wert in One2Many haben (product1, product2), wenn I ‚product2‘ die Funktion wählen onchange_product_id den Wert von 2 anstelle von product2 zurückgibt und es erscheint auf dem Feld 'name'. Dies geschieht nur, wenn ich on_change in many2one, one2many .... Beziehung verwende, aber in char, int und float den Wert der Funktion korrekt zurückgibt.OpenERP v7 ON_CHANGE Funktion gibt Nummer anstelle des Wertes

Meine Frage ist, wie kann ich den richtigen Wert von one2many mit on_change-Funktion erhalten?

Danke,

Antwort

2

Sie benötigen, wie etwas zu tun,

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} 

Da product_id enthält und id nicht der durchsuchbaren Rekord. Also zuerst müssen Sie diesen Datensatz durchsuchen und müssen dann den Namen des Produkts abrufen.

+0

Aber es gibt mir einen Fehler .... TypeError: 'int' Objekt hat kein Attribut '__getitem__' – weelDaw

+0

Sorry, ich habe die Suche anstelle von Durchsuchen verwendet, in der neuen API Suche wird Sie durchsuchbar. Versuchen Sie, die Antwort zu aktualisieren –

+0

Gotcha ... genial ... :) – weelDaw