5

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

@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',
    }

可悲的是,什么也没发生,我不知道下一步该尝试什么。我试图将目标更改为newcurrent或名称,但没有任何变化。两者都没有成功。

编辑:请参阅我对卡洛斯回答的评论。

4

1 回答 1

7

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

<button name="method_name" string="My Button" type="object"/>

然后在你的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'
    }
于 2016-06-06T10:50:28.177 回答