2017-09-25 70 views
1

什么是映射和如何使用它在odoo 10? 如何使用odoo 10中的映射和过滤? 为例使用映射()在odoo 10

结果=总和(order.order_line.filtered( 拉姆达R:r.state = “状态”).mapped( “FIELD_NAME”) !)

和多重峰分别由其它的FIELD1值field2在同一个表中返回所有总和。

回答

4

是完全记录在Odoo docs

()映射:应用提供的功能,每个记录在记录,返回结果是否记录集的记录。提供的函数可以是一个字符串来获取字段值。

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

在你的代码order.order_line.filtered(lambda r: r.state != "state").mapped("field_name")返回从orderfield_name列表中的表达式。然后sum python函数做的总和。

+1

谢谢你,对于odoo文档我已经使用records.mapped(lambda r: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,) 

当应用映射:

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

所以总和将返回21,如果他们是浮动/ INT。

希望它有帮助!