2017-09-25 7 views
1

マップされているものとその使い方odoo 10? odoo 10でマップとフィルタを使う方法は? exempleodooでmapped()を使用する10

結果= SUM(order.order_line.filtered( ラムダR:r.state = "状態").mapped( "FIELD_NAME") !)

および他によるFIELD1のMULT各値同じ表のfield2はすべての合計を返します。フィルタ

答えて

4

は完全にOdoo docsに記載されて:

マッピングさ():、レコードセット内の各レコードに設けられた関数を適用した結果がレコードである場合にレコードセットを返します。提供される関数は、フィールド値を取得する文字列にすることができます。あなたのコードで

# returns a list of names 
records.mapped('name') 

orderからfield_nameのリストを返しますorder.order_line.filtered(lambda r: r.state != "state").mapped("field_name")表現。その後、sum python関数が合計を行います。

+1

ありがとう、odoo docsのために私はそのrecords.mapped(ラムダr.field1 + r.field2)が私のために働いている使用しています。 –

5

は、基準(あなたのケースでは、オーダーラインが状態イマイチ「状態」に一致レコードセットを返します。あなたがレコードセットにマッピングされて使用する場合

、私はFIELD_NAMEでリストを返します。レコードのそれぞれのフィールドがmany2oneであれば、私は重複を削除します

例、あなたは「数量」というフィールドを持つレコードセットを持って

record 1: quantity = 5 
record 2: quantity = 6 
record 3: quantity = 10 

フィルターあなたが持つかもしれ後。。:

res = sale.order.line(1,2,3,) 

マッピングされて適用するとき:彼らはフロート/ int型である場合に

quantities_list = res.mapped('quantity') #[5, 6, 10] 

ので、合計は21を返しますが。

希望すると助かります!