2017-09-25 75 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。

希望它有幫助!