2017-08-28 3 views
0

I für die folgende Schleife, wo account_move_id ist ein Many2one Feld:Odoo 10 Traverse Many2many Feld

... 
for line in payment.move_line_ids + expense_sheet.account_move_id.line_ids: 
... 

I account_move_id so dass es ein Many2many Feld geändert haben. Wenn ich also den Code ausführe, erhalte ich eine "expected singleton" Ausnahme in der for-Schleife.

Vorausgesetzt, dass account_move_id jetzt ein Many2many Feld ist, wie konnte ich alle line_ids von allen account_move_ids von expenses_sheet bekommen?

Danke,

Antwort

0

ich weiß nicht, wo das Problem genau, aber wenn Sie erhalten diesen Fehler höchstwahrscheinlich Sie, wo versucht, ein Feld acces aber in Recordset, das mehr als einen Datensatz enthält.

Wenn Sie Dekorator api.multi self verwenden, kann die Methode mehr als einen Datensatz enthalten. Um diesen Fehler zu vermeiden, durchlaufen Sie immer self.

 for rec in self: 
       # here rec will alawys contain just one record 
       rec.some_field 

so kann dieser Fehler im Grunde in one2many Feld passieren überprüfen, wo haben Sie ein Feld oder eine Methode in einem Re-Cord acces

0

Sie mapped() verwenden können, ein bestimmtes Feld aus allen Datensätzen in einem Re-Cord zu sammeln.

Wie konnte ich alle line_ids von allen account_move_id von expense_sheet bekommen?

# If account_move_id is a recordset, mapped will get line_ids for all of them 
line_ids = expense_sheet.account_move_id.mapped('line_ids')