如何从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

有没有人知道如何做到这一点?我怎么能保存第一个向导数据?

+0

如何用按钮打开“行”向导:通过返回动作词典?如果是这样,只需通过单击“应用”将父向导作为操作字典(目标“新”)返回,那么按钮类型“对象”应该像另一个按钮那样。 – CZoellner

+0

对给定答案有任何反馈吗? –

首先你需要浏览向导的当前记录和它的行。随后按需要写入值。

用向导对象返回当前的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