2016-03-29 52 views
0

我想修改一個名爲mrp_bom_history的OpenERP插件,以獲取現有bom行的默認值作爲默認值。OpenERP one2many默認值

我做了一個_read_line方法來返回類似於how to initialize a default one2many fields in OpenERP的bom_line id的列表,但是我得到了'記錄未正確加載'異常,並且我無法找出原因。從save_bom_history.py

Python代碼:

class save_bom_history(osv.osv_memory): 
    def _read_line(self,cr,uid,context=None): 
     bom = self.pool.get('mrp.bom').browse(cr,uid,context['active_id']) 
     result = [] 
     for lines in bom.bom_lines: 
      result.append(lines.id) 
     return result 

    _name  = "save.bom.history" 
    _columns = { 
        'name'   : fields.char('Name'), 
        'cut_off_date' : fields.date('Cut-off Date'), 
        'new_bom_ids' : fields.one2many('save.bom.history.line','\ 
wizard_id','New Bill of Material'), 
        } 

    _defaults = { 
        'name'   : "History", 
        'cut_off_date' : time.strftime('%Y-%m-%d'), 
        'new_bom_ids' : _read_line, 
        } 
+0

對象save.bom.history.line工作,它是一個嚮導? – yannicksoldati

+0

Save_bom_history是一個帶有名稱字段和截止日期字段的嚮導,然後它具有一個new_bom_ids行,其中包含產品名稱,產品數量,測量單位,有效期限,有效期限。 – MortenS

+0

Save.bom.history.line也是一個用於將產品添加到BoM的嚮導。當創建新的BoM時,將使用save_bom_history_line嚮導創建的行中的數據。所以它嵌入到save.bom.history嚮導中。 – MortenS

回答

0

One2many和Many2many使用一種特殊的「命令」的格式來操縱所述一組存儲在/與場相關聯的記錄。

試試這個:

result.append((0, 0, lines.id)) 
+0

這是朝着正確方向邁出的一步,但我得到了一個嚮導,其中有空線條,與BoM中的線條相對應。正如在http://imgur.com/GPyQRDE中,我認爲這可能是因爲在我嘗試加載到嚮導中的BoM行中沒有vaild並且有效。我還應該補充說,當我嘗試編輯這些行時,這些更改立即被丟棄。 – MortenS

0

我把它返回一個元組,而不是僅僅是ID的

 for lines in bom.bom_lines: 
     line_data = { 
         'name'    : lines.name, 
         'date_start'  : lines.date_start, 
         'date_stop'  : time.strftime('%Y-%m-%d'), 
         'product_qty'  : lines.product_qty, 
         'product_id'  : lines.product_id and lines.product_id.id or False, 
         'product_uom'  : lines.product_uom and lines.product_uom.id or False, 
         'bom_id'   : bom and bom.id or False, 
         } 
     result.append((0,0,line_data)) 
    return result