在 odoo 10 中使用 mapped()
Use mapped() in odoo 10
映射了什么以及如何在 odoo 10 中使用它?
以及如何在 Odoo 10 中使用映射和过滤?
例子
result = sum( order.order_line.filtered(
lambda r: r.state != "state" ).mapped( "field_name" )
)
并将 field1 的每个值乘以其他 field2 在相同的 table 和 return 所有总和。
过滤将 return 符合条件的记录集(在您的情况下,状态不是 "state" 的订单行)。
当您使用映射到记录集时,我将为每个记录集 return 一个包含 field_name 的列表,如果该字段是 many2one,它将删除重复项。
例如,您有一个记录集,其中包含一个名为 "quantity" 的字段。
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]
所以总和将为 return 21 如果它们是 float/int。
希望对您有所帮助!
在 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')
在您的代码中,表达式 order.order_line.filtered( lambda r: r.state != "state" ).mapped( "field_name" )
returns 来自 order
的 field_name
的列表。然后 sum
python 函数进行求和。
映射了什么以及如何在 odoo 10 中使用它? 以及如何在 Odoo 10 中使用映射和过滤? 例子
result = sum( order.order_line.filtered(
lambda r: r.state != "state" ).mapped( "field_name" )
)
并将 field1 的每个值乘以其他 field2 在相同的 table 和 return 所有总和。
过滤将 return 符合条件的记录集(在您的情况下,状态不是 "state" 的订单行)。
当您使用映射到记录集时,我将为每个记录集 return 一个包含 field_name 的列表,如果该字段是 many2one,它将删除重复项。
例如,您有一个记录集,其中包含一个名为 "quantity" 的字段。
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]
所以总和将为 return 21 如果它们是 float/int。
希望对您有所帮助!
在 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')
在您的代码中,表达式 order.order_line.filtered( lambda r: r.state != "state" ).mapped( "field_name" )
returns 来自 order
的 field_name
的列表。然后 sum
python 函数进行求和。