Python OpenERP one2many默认值

Python OpenERP one2many默认值,python,openerp,Python,Openerp,我试图修改一个名为mrp_bom_history的OpenERP插件,以从现有bom行获取默认值作为默认值 我使用了一个_read_line方法来返回类似于的bom_行ID列表,但我得到了一个“记录未正确加载”异常,我很难找出原因 save_bom_history.py中的Python代码: class save_bom_history(osv.osv_memory): def _read_line(self,cr,uid,context=None): bom = sel

我试图修改一个名为mrp_bom_history的OpenERP插件,以从现有bom行获取默认值作为默认值

我使用了一个_read_line方法来返回类似于的bom_行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,
                  }

One2many和Many2many使用一种特殊的“命令”格式来操作存储在字段中或与字段相关联的记录集

试试这个:

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

我通过返回一个元组而不仅仅是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

对象save.bom.history.line,是向导吗?save\u bom\u history是一个向导,它有一个名称字段和截止日期字段,然后它有一个新的\u bom\u id行,其中包含产品名称、产品数量、计量单位、有效期从、有效期到。save.bom.history.line也是一个用于将产品添加到bom的向导。创建新bom表时,将使用“保存bom表历史记录”行向导创建的行中的数据。因此,它被嵌入到save.bom.history向导中。这是朝着正确方向迈出的一步,但我得到了一个与bom中的行相对应的空行向导。我想这可能是因为在我尝试加载到向导中的BoM行中没有有效的。我还应该补充一点,当我试图编辑行时,更改会立即被丢弃。