我有一个向导,其中有一个one2many字段。我在one2many的每一行都做了一个按钮,它调用了我制作的另一个向导。该向导用于修改所选行的某些值。
我的目的是当您点击向导的应用按钮时,返回第一个带有新更改的向导。
示例:
第一个向导有一个包含三个记录的one2many字段:
- 产品A | 1 ud |来源地点X |目的地位置Y |地段A1
- 产品B | 2 ud |来源地点X |目的地位置Y |地段B1
- 产品C | 3 ud |来源地点X |目的地位置Y |地段C1
现在,我点击我制作的第一行按钮(每行有一个),然后 我的向导已打开。在这里我可以修改第一行的地段( 一个与产品A)。想象一下,我设置了批次A0,然后点击应用。
我应该返回父向导,并查看相同的数据,除了 所做的改变。结果将是:
- 产品A | 1 ud |来源地点X |目的地位置Y | Lot A0
- 产品B | 2 ud |来源地点X |目的地位置Y |地段B1
- 产品C | 3 ud |来源地点X |目的地位置Y |地段C1
有谁知道如何实现这一目标?我怎样才能保留第一个向导数据?
答案 0 :(得分:1)
首先,您需要浏览向导及其行的当前记录。然后根据需要写入值。
使用向导对象返回当前id。
尝试以下技巧:
#apply button method logic
def apply_data(self, cr, uid, ids, context=None):
if not context:
context = {}
ctx = context.copy()
for wizard in self.browse(cr, uid, ids[0], context=context):
for line in wizard.one2many_field:
line.write({
'field_name': field_value
})
dummy, view_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'module_name', 'wizard_form_view_name')
return {
'name':_("Name of your Wizard"),
'view_mode': 'form',
'view_id': view_id,
'view_type': 'form',
'res_id': ids and ids[0] or False,
'res_model': 'wizard.object.name',
'type': 'ir.actions.act_window',
'nodestroy': True,
'target': 'new',
'context': ctx
}
注:
您也可以更新上下文值。
应用按钮类型必须是对象才能执行方法逻辑。