通过单击按钮,用户应从给定值创建新订单,并将直接重定向到新创建订单的表单视图。通过按钮调用以下方法:
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;的评论答案。
答案 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'
}