如何在python代码中重定向到另一个窗体视图 - Odoo 8

dnl*_*.re 4 python openerp odoo-8 odoo-view

通过单击按钮,用户应该从给定值创建新订单,并直接重定向到新创建订单的表单视图.通过按钮调用以下方法:

@api.one
def method_name(self):
    [...]       
    vals = [...]
    new_order = self.env['sale.order'].create(vals)
    self.write({ 'state': 'review', })
    return {
        'type': 'ir.actions.act_window',
        'name': 'sale.view_order_form',
        'res_model': 'sale.order',
        'res_id': new_order.id,
        'view_type': 'form',
        'view_mode': 'form',
        'target' : 'self',
    }
Run Code Online (Sandbox Code Playgroud)

可悲的是没有任何反应,我不知道接下来要尝试什么.我试图将目标更改为new或者current名称,但没有任何变化.两者都没有成功.

编辑:看看我对Carlos回答的评论.

Car*_*ayo 6

要从按钮执行模型的方法,必须object在xml视图中将按钮定义为这样的类型:

<button name="method_name" string="My Button" type="object"/>
Run Code Online (Sandbox Code Playgroud)

然后在您的操作中model,如果您想在执行某些操作后重定向到另一个视图,则必须返回新操作:

@api.multi
def method_name(self):
    .......
    return {
        'view_type': 'form',
        'view_mode': 'form',
        'res_model': 'my.model',
        'target': 'current',
        'res_id': the_resource_id,
        'type': 'ir.actions.act_window'
    }
Run Code Online (Sandbox Code Playgroud)