Python OpenERP one2many默认值
我试图修改一个名为mrp_bom_history的OpenERP插件,以从现有bom行获取默认值作为默认值 我使用了一个_read_line方法来返回类似于的bom_行ID列表,但我得到了一个“记录未正确加载”异常,我很难找出原因 save_bom_history.py中的Python代码: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
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行中没有有效的。我还应该补充一点,当我试图编辑行时,更改会立即被丢弃。