如何从Odoo8中的其他向导调用向导?

时间:2016-10-11 08:38:53

标签: python python-2.7 odoo-8 odoo

我有一个向导,其中有一个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
  •   

有谁知道如何实现这一目标?我怎样才能保留第一个向导数据?

1 个答案:

答案 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
    }

注:

您也可以更新上下文值。

应用按钮类型必须是对象才能执行方法逻辑。