2017-02-16 8 views
0

私はレコードセットでフィルタリングされた使用を試みますが、consloleではres.partner()だけを取得します。odoo9でフィルター処理された操作

res.partnerからすべてのレコードを取得する方法どこのid =のcompany_idあなたのフィルターは、実際にすべてのレコードを除外したためと思われる

@api.multi 
def get_partner(self): 
    my_ids = self.env['res.partner'].filtered(lambda r: r.id == r.company_id) 
    print(my_ids) 

答えて

1

。セット内の1つのレコードが基準を満たしていないことを意味します。

あなたのクエリr.id == r.company_idは、あなたが欲しいリストを提供します何かにあなたのラムダ式を変更する必要があるので、基本的に

find all partners whose id is equal to the company id 

を言っています。現在のユーザーの会社の一部であるすべてのパートナーが必要な場合、クエリは次のようになります。

company_id = self.env.user.company_id.id 
my_ids = self.env['res.partner'].search([]).filtered(lambda r: r.company_id.id == company_id) 
+0

こんにちはフィリップは、ここではスクリーンショットhttps://postimg.org/image/vmqv6uexn/ – Pointer

+0

申し訳ありませんが、ちょうど実現しています。フィルタを適用すると、既存のレコードセットのみがフィルタ処理されます。まず、検索してフィルタリングする必要があります。私は自分の答えを更新しました。 –

+0

Phillip在庫がありますが、このコードを使用している場合にはなぜフィルタを使用するのですか?my_ids = self.env ['res.partner']。search([( 'company_id'、 '='、company_id)])なぜ、どこでフィルタリングを使用するのか分かりません。 – Pointer

関連する問題