What is mapped and how use this in odoo 10? And how to use mapped and filter in Odoo 10? example
result = sum( order.order_line.filtered( lambda r: r.state != "state" ).mapped( "field_name" )
)and multiply each value of field1 by other field2 in same table an return all sum.
2 Answers
Is fully documented on Odoo docs:
mapped(): applies the provided function to each record in the recordset, returns a recordset if the results are recordsets. The provided function can be a string to get field values.
# returns a list of names
records.mapped('name')In your code the expression order.order_line.filtered( lambda r: r.state != "state" ).mapped( "field_name" ) returns a list of field_name from order. Then sum python function do the sum.
The filtered will return the recordsets that match the criteria (in your case, the order lines that the state isnt "state").
When you use mapped to the recordset, i will return a list with the field_name for each of the recordset, if the field is a many2one, it will remove duplicates.
Example, you have a recordset with a field called "quantity".
record 1: quantity = 5
record 2: quantity = 6
record 3: quantity = 10after the filtered you may have:
res = sale.order.line(1,2,3,)when applying mapped:
quantities_list = res.mapped('quantity') #[5, 6, 10]so the sum will return 21 if they are float/int.
Hope it helps!