2016-09-17 41 views
0

我創建的一些對象線鏈接到當前的一個onchange功能odoo:寫函數保存舊數據

mo_lines_g1 = fields.One2many(comodel_name='object.order', inverse_name='mo_id1', copy=False) 

@api.onchange('date') 
def change_date(self): 
    if self.date: 
     g1=self.env['object.order'].search(['&'('date_order','>=',self.date),('date_order','<=',self.date)]) 
     self.mo_lines_g1 = [(6,0, g1.ids)] 

這裏一切都很好,但是當我保存視圖,Odoo嘗試刪除鏈接線從object.order
,所以我想看看寫函數發送了什麼,我發現它送舊記錄:
vals[ 'mo_lines_g1'] = [[2, 61, False], [2, 62, False], [2, 63, False]]
normaly它必須是:
vals['mo_lines_g1']=[] # or [(6,0,[])]
有什麼想法?

回答

0

有關寫入相關字段ORM Documentation的文檔將(2,_,ids)視爲不能用於創建的方法。如果你正在寫作,你可以做以下事情。

如果覆蓋write()函數,您可能會放入一些日誌以及(根據Odoo行爲的原因)強制記錄以您希望的方式寫入。

@api.multi 
def write(self, vals): 
    _logger = logging.getLogger(__name__) 
    _logger.info("PREPARING TO WRITE RECORD") 
    _logger.info("WRITING VALS: " + str(vals)) 
    return super(Schedule, self).write(vals) 
+0

(2,_,IDS)是對於創建,但在這種情況下,行的存在,我只是想鏈接它們與(6,0,ids) – m3asmi

0

(6, _, ids)不能與One2many字段一起使用。

它被描述在x2many values filling

+0

它工作正常與鏈接字段* mo_lines_g1 *,問題是當按下按鈕保存,odoo嘗試*刪除*鏈接的字段! – m3asmi

+0

@ m3asmi檢查鏈接,它不應該與'(6,_,ids)'一起使用。 – Zety

0

我覺得這是在V8中的錯誤,它並不全自動工作
(3,id,_)取代了丘壑的(2,id,_)功能可按

@api.multi 
def write(self, vals): 
    if vals.has_key('mo_lines_g1'): 
     g1=[] 
     for line in vals['mo_lines_g1']: 
      if line[0] == 2: 
       line[0]=3 
      g1.append(line) 
    return super(object_order, self).write(vals) 
+0

這只是一個臨時解決方案,直到odoo dev解決問題! – m3asmi