我正在尝试修改一个名为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,
}
答案 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