Soluzione 0
@api.multi
def check_tax_id(self):
self.ensure_one()
self.name = "New name"
return {
"type": "ir.actions.do_nothing",
}
Questa soluzione è stata fornita da here Tadeusz Karpinski.
Soluzione 1
è possibile restituire un nuovo modulo con lo stesso record 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',
}
Soluzione 2
È possibile creare un widget in jQuery. Questo aprirà la procedura guidata e potrai assegnare manualmente il comportamento che desideri ai pulsanti. È possibile utilizzare la funzione call
per richiamare le funzioni python così:
[...]
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(); }},
],
});
[...]
Soluzione 3
Naturalmente è possibile eseguire l'override del metodo create anche per evitare la creazione di record in alcuni casi
Soluzione 4
Un'ultima opzione. Creare un flusso di lavoro con un campo di stato. Crea pulsanti del flusso di lavoro per inviare segnali per cambiare lo stato. Puoi mostrare o nascondere il resto dei campi usando l'attributo attrs e il campo dello stato. Ma non so se questo si adatterebbe ai tuoi bisogni.
Ho trovato informazioni importanti qui: https://github.com/odoo/odoo/issues/2270 –
Attualmente la tua soluzione sembra l'unica che funzioni. –
Il record è già stato creato all'avvio della procedura guidata, non verrà creato di nuovo se si passa id della procedura guidata corrente ma verrà creato se si passa False in res_id. – StackUP