2017-02-14 65 views
0

什麼是映射以及如何在odoo 9中使用它?在odoo 9中使用映射()()

任何簡單的例子?

在公報頁停留時間:

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

# returns a recordset of partners 
record.mapped('partner_id') 

# returns the union of all partner banks, with duplicates removed 
record.mapped('partner_id.bank_ids') 
+0

本示例接縫清晰。如果不是,你應該很好地掌握什麼是記錄集。 – Majikat

回答

5

基本上它是一種方便的方法來返回記錄(對象或值的列表)。假設您想要一個與特定域名匹配的所有合作伙伴電子郵件地址列表。你可以很容易地做到這一點。

domain = [('email','not in',[False,None])] 
records = self.env['res.partner'].search(domain) 
email_list = records.mapped('email') 

print(email_list) 
>>> [u'[email protected]',u'[email protected]',u'[email protected]'] 

這樣,你不需要做這個

email_list = [] 
domain = [('email','not in',[False,None])] 
for rec in self.env['res.partner'].search(domain): 
    if rec.email: 
     email_list.append(rec.email) 
print(email_list) 
>>> [u'[email protected]',u'[email protected]',u'[email protected]'] 

在上面的例子odoo將通過所有的記錄都迭代並以列表的形式返回的電子郵件從每個記錄。

因此,不要遍歷所有記錄以從每個記錄中獲取您可以使用映射的相同字段。

+0

感謝您的回答,但我仍然不明白這有什麼好處! – Pointer

+0

我已經修正,以使其更清楚。 –

+0

@PhillipStack非常感謝Phillip .... –