2016-03-29 54 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