2017-04-27 437 views
0

我需要刪除onchange方法中的one2many記錄。我已經嘗試了下面的代碼。在odoo中刪除one2many中的記錄

*的.py

@api.onchange('abt') 
def _onchange_active(self): 
    resident_flat_rel_id =[] 
    if self.active == False: 
     write=self.write({'resident_flat_rel_ids':[(2,self.resident_flat_rel_ids.id,False)]}) 
     print'werite', write // prints True. 

但是記錄不會從數據庫中刪除。

resident_flat_rel_ids是父模型中的one2many字段。

+0

問題只有一個反向的關係),如果在丟棄用戶點擊更改此值後,你要取消刪除,在平變化happend? – Cherif

回答

2

其實one2many不存儲在數據庫中。 ORM正在從相關的many2one字段爲您製作one2many。一旦我們知道我們可以繼續刪除記錄。

好吧,現在我們知道one2many如何工作,我們需要刪除記錄。這裏有兩個選項:從db刪除記錄或從one2many字段中刪除僅參考。

要刪除記錄,您應該將其刪除(請參閱官方文檔。hint:unlink())。如果你想刪除只是參考,那麼你應該刪除相關記錄的many2one字段,很簡單。

好運

0

你可以做一件事......

如果要刪除完整的內容做到這一點:

遍歷您one2many領域,即resident_flat_rel_ids 像

for individual in resident_flat_rel_ids: 
    if some condition: //If requierd 
     individual.unlink() 

如果您只想刪除引用,請執行以下操作: 使inverse_name(A many2one字段這代表了one2many場中每個對象爲False

for individual in resident_flat_rel_ids: 
    if some condition: //If requierd 
     individual.inverse_name = False