什麼是映射和如何使用它在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)正在爲我的工作。 –