如何从Odoo8中的其他向导调用向导?
问题描述:
我有一个向导,其中有一个one2many字段。我在one2many的每一行都做了一个按钮,这个按钮叫我创建的另一个向导。该向导用于修改所选行的某些值。如何从Odoo8中的其他向导调用向导?
我的目的是当您点击我的向导的应用按钮时,返回第一个向导,并带有新更改。
实施例:
第一向导具有三个记录一个one2many字段:
- 产品A | 1 ud |来源地点X |目的地位置Y | Lot A1
- 产品B | 2 ud |来源地点X |目的地位置Y | Lot B1
- 产品C | 3 ud |来源地点X |目的地位置Y | Lot C1
现在,我点击我制作的第一行按钮(每行有一个),然后我的向导打开 。在这里,我可以修改第一行的大部分( 与产品A)。想象一下,我设置了Lot A0并点击Apply。
我应该返回到父向导,并看到相同的数据,除了 所做的更改。所以结果如下:
- 产品A | 1 ud |来源地点X |目的地位置Y | 批次A0
- 产品B | 2 ud |来源地点X |目的地位置Y | Lot B1
- 产品C | 3 ud |来源地点X |目的地位置Y | Lot C1
有没有人知道如何做到这一点?我怎么能保存第一个向导数据?
答
首先你需要浏览向导的当前记录和它的行。随后按需要写入值。
用向导对象返回当前的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
}
注:
您还可以更新上下文值也是如此。
应用按钮类型必须是执行方法逻辑的对象。
+0
谢谢!我想'apply_data'必须是从我的自定义向导中* Apply *按钮调用的方法。但是在这个自定义向导中没有One2many字段。 One2many字段位于“父级”向导中。 – forvas
如何用按钮打开“行”向导:通过返回动作词典?如果是这样,只需通过单击“应用”将父向导作为操作字典(目标“新”)返回,那么按钮类型“对象”应该像另一个按钮那样。 – CZoellner
对给定答案有任何反馈吗? –