2016-04-26 5 views
0

Ich versuche, nach einem bestimmten Produktcode mit odoo PHP API zu filtern. Wenn ich von qty_available > 0 filtern funktioniert es gut:Filter nach 'Code' mit odoo Produkt API

$records = $models->execute_kw($db, $uid, $pass, 'product.product', 'search_read', array(
    array(
    array('qty_available', '>', 0), 
), 
), array(
    'fields' => array('code', 'display_name', 'qty_available') 
)); 

... aber wenn ich von Code filtern, gibt es alle Ergebnisse, im Wesentlichen alle Filter ignorieren:

$records = $models->execute_kw($db, $uid, $pass, 'product.product', 'search_read', array(
    array(
    array('code', '=', 'T-0001'), 
), 
), array(
    'fields' => array('code', 'display_name', 'qty_available') 
)); 

Weiß jemand, warum dies auch sein mag passiert bitte? Es funktioniert auch gut mit einer Ganzzahl-ID, nur nicht den String-Code. Vielen Dank!

Antwort

1

Dank Prakash Sharma für seine Hilfe, aber es stellt sich heraus, dass der eigentliche Weg, um es Arbeit zu bekommen war zu verwenden, product.product 's Feld default_code statt code, die zum Glück durchsuchbar ist. Dies kann je nach Einrichtung anders sein, aber ich war nicht bereit, die Datenbank zu ändern, und ich denke, die interne Referenz sollte rein gehalten werden, so wie sie entworfen wurde.

1

In dem Modell product.productcode Feld ist die functional field/compute field.

Diese Art von Feld sind Nicht durchsuchbare standardmäßig.

Aber Sie können den Speicher = True markieren und suchen.

HINWEIS: Es gibt Vor-und Nachteile der Markierung Shop = True

+0

Ich sehe, danke für Ihre Antwort. Gestern war meine erste Erfahrung mit odoo, so dass mir Details wie nicht indexierbare Felder nicht bekannt waren. Was sind Nachteile von "speichern = wahr"? –

+0

Kann ein Feld auch als durch das Front-End durchsuchbar festgelegt werden, oder würde ich nur über die API darauf zugreifen können? –

+0

Was sind Nachteile von store = True: Sobald ein Rechenfeld als store = True markiert ist, wird es danach nicht mehr berechnet. Um dies zu verarbeiten, müssen Sie @ api.depends mit der compute Funktion verwenden, damit es auf die Änderung des Feldes hängt ab. – prakash