OpenERP one2many默认值

时间:2016-03-29 12:46:05

标签: python openerp

我正在尝试修改一个名为mrp_bom_history的OpenERP插件,以便从现有的bom行中获取默认值作为默认值。

我已经制作了一个_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,
                  }

2 个答案:

答案 0 :(得分:0)

One2many和Many2many使用特殊的“命令”格式来操纵存储在该字段中/与该字段相关联的记录集。

试试这个:

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

答案 1 :(得分: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