解决方案 0
@api.multi
def check_tax_id(self):
self.ensure_one()
self.name = "New name"
return {
"type": "ir.actions.do_nothing",
}
此解决方案由 Tadeusz Karpinski here 提供。
解决方案 1
您可以返回具有相同记录 ID 的新表单。
@api.multi
def check_tax_id(self):
self.ensure_one()
self.name = "New name"
return {
'context': self.env.context,
'view_type': 'form',
'view_mode': 'form',
'res_model': 'model_name',
'res_id': self.id,
'view_id': False,
'type': 'ir.actions.act_window',
'target': 'new',
}
解决方案 2
您可以在 jQuery 中创建一个小部件。这将打开向导,您可以手动将所需的行为分配给按钮。你也可以使用call函数来调用python函数:
[...]
new instance.web.Dialog(this, {
title: _t("Title"),
width: '95%',
buttons: [
{ text: _t("First button"), click: function() { self.first_button(); }},
{ text: _t("Second button"), click: function() { self.second_button(); }},
{ text: _t("Close"), click: function() { dialog.close(); }},
],
});
[...]
解决方案 3
当然你也可以重写create方法以避免在某些情况下创建记录
解决方案 4
最后一个选项。创建具有状态字段的工作流。创建工作流按钮以发送信号以更改状态。您可以使用 attrs 属性和 state 字段显示或隐藏其余字段。但我不知道这是否会适应您的需求。