什么是映射和如何使用它在odoo 10? 如何使用odoo 10中的映射和过滤? 为例使用映射()在odoo 10
结果=总和(order.order_line.filtered( 拉姆达R:r.state = “状态”).mapped( “FIELD_NAME”) !)
和多重峰分别由其它的FIELD1值field2在同一个表中返回所有总和。
什么是映射和如何使用它在odoo 10? 如何使用odoo 10中的映射和过滤? 为例使用映射()在odoo 10
结果=总和(order.order_line.filtered( 拉姆达R:r.state = “状态”).mapped( “FIELD_NAME”) !)
和多重峰分别由其它的FIELD1值field2在同一个表中返回所有总和。
是完全记录在Odoo docs:
()映射:应用提供的功能,每个记录在记录,返回结果是否记录集的记录。提供的函数可以是一个字符串来获取字段值。
# returns a list of names
records.mapped('name')
在你的代码order.order_line.filtered(lambda r: r.state != "state").mapped("field_name")
返回从order
的field_name
列表中的表达式。然后sum
python函数做的总和。
过滤后会返回符合条件的记录集(在你的情况下,订单行,国家心不是“状态”。
当您使用映射到记录,我将返回一个列表与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。
希望它有帮助!
谢谢你,对于odoo文档我已经使用records.mapped(lambda r:r.field1 + r.field2)正在为我的工作。 –