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

时间:2016-06-06 09:37:49

标签: python openerp odoo-8 odoo-view

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

public class MyUser extends User {
    private static final long serialVersionUID = 1L;
    private Long id;
    private String mail;
    public MyUser(String username, String password, String mail, Long id, boolean enabled, boolean accountNonExpired,
            boolean credentialsNonExpired, boolean accountNonLocked,
            Collection<? extends GrantedAuthority> authorities) {
        super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
        this.id = id;
        this.mail = mail;
    }
    @Override
    public String toString() {
        return "MyUser [id=" + id + ", mail=" + mail + "]";
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getMail() {
        return mail;
    }
    public void setMail(String mail) {
        this.mail = mail;
    }
}

可悲的是没有任何反应,我不知道接下来该尝试什么。我尝试将目标更改为@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', } new或名称,但没有任何变化。两者都没有成功。

编辑:查看我对Carlos&#39;的评论答案。

1 个答案:

答案 0 :(得分:5)

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

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