2017-02-14 5 views
0

マップされているものとodoo 9でどのように使用されていますか?odooでmapped()を使用9

どのような簡単な例ですか? oficialページの滞在で

# 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

は、基本的にはレコード(オブジェクトまたは値のリスト)を返す簡易メソッドです。特定のドメインと一致するすべてのパートナーの電子メールアドレスのリストが必要だったとします。そう簡単にこれを達成することができます。あなたは上記の例のodooでこの

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]'] 

を行う必要はありません

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]'] 

この方法では、レコードのすべてを反復し、リストの形式で各レコードからのメールが戻ってきたでしょう。

各レコードから同じフィールドを取得するためにすべてのレコードをループするのではなく、マップされたレコードを使用できます。

+0

回答ありがとうございますが、私はまだこれの利点は何かを理解していない! – Pointer

+0

私はこれをもっと明確にするように改訂しました。 –

+0

@PhillipStackありがとうフィリップ.... –