2017-02-16 2 views
0

Ich versuche, gefilterte auf Recordset zu verwenden, aber in consolole erhalten nur res.partner() leer.Gefilterte Operation in odoo9

Wie bekommen alle Datensätze aus res.partner wo 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) 

Antwort

1

, die wahrscheinlich ist, weil Ihre Filter alle Datensätze tatsächlich herausgefiltert hat. Das bedeutet, dass nicht ein Datensatz im Set Ihren Kriterien entspricht.

Sie Abfrage r.id == r.company_id sagt

find all partners whose id is equal to the company id 

Also im Grunde müssen Sie Ihre Lambda-Ausdruck, um etwas zu ändern, das die Liste Sie wollen liefern. Wenn Sie alle Partner möchten, die Teil der aktuellen Benutzerfirma sind, würde die Abfrage wie folgt aussehen.

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

Hallo Phillip, ist hier Screenshot https://postimg.org/image/vmqv6uexn/ – Pointer

+0

Sorry, gerade realisiert. Gefiltert filtert nur ein vorhandenes Re-Cord-Set. Zuerst müssen Sie suchen und dann filtern. Ich habe meine Antwort aktualisiert. –

+0

Phillip Stock Jetzt arbeiten, aber warum gefilterte verwenden, wenn mit diesem Code my_ids = self.env ['res.partner']. Search ([('company_id', '=', company_id)]) bekomme ein Ergebnis. Ich verstehe nicht warum und wo gefiltert? – Pointer