Ich habe ein transientes Modell, das als Dialog dient. In meiner Formularansicht habe ich einen Knopf wie folgt:
%Vor%Die Schaltfläche ruft diese Funktion auf (ich kann bestätigen, dass sie tatsächlich aufgerufen wird):
%Vor%Mein Problem ist, dass das Dialogfenster sofort geschlossen wird, sobald ich auf diese Schaltfläche klicke! Was mache ich falsch?
Lösung 0
%Vor%Diese Lösung wurde hier von Tadeusz Karpinski zur Verfügung gestellt.
Lösung 1
Sie können ein neues Formular mit derselben Datensatz-ID zurückgeben.
%Vor%Lösung 2
Sie können ein Widget in jQuery erstellen. Dadurch wird der Assistent geöffnet und Sie können das gewünschte Verhalten manuell den Schaltflächen zuweisen. Sie können auch die Funktion call
verwenden, um Python-Funktionen aufzurufen:
Lösung 3
Natürlich können Sie auch die create-Methode überschreiben, um in einigen Fällen die Erstellung des Datensatzes zu vermeiden
Lösung 4
Eine letzte Option. Erstellen Sie einen Workflow mit einem Statusfeld. Erstellen Sie Workflow-Schaltflächen, um Signale zum Ändern des Status zu senden. Sie können die übrigen Felder mithilfe des attrs-Attributs und des state-Felds ein- oder ausblenden. Aber ich weiß nicht, ob sich das an deine Bedürfnisse anpassen würde.
Das einfachste ist:
%Vor%Da der Typ verwendet wird, um eine Methode in der Klasse ActionManager (javascript) aufzurufen
Es ist besser als "type": "ir.actions.do_nothing", die eine Ausnahme erzeugen (dieses Attribut existiert nicht)
gestern stieß ich auf das gleiche Problem. Ich musste einen Knopf zeigen, um etwas zu tun, ohne das ganze Wizard einzureichen. Ich habe mich darum gekümmert, überhaupt keinen Knopf zu benutzen. Es ist ziemlich einfach und effektiv. Was Sie brauchen:
invisible="1"
und einem Label, das als Schaltfläche Hier ist der Code:
%Vor%Der Trick funktioniert, denn wenn ein Label% co_de hat, verhält sich das Attribut wie das Kontrollkästchen selbst. Wenn Sie also auf das Label klicken, wechseln Sie das Kontrollkästchen.
Ja, Sie haben Recht ... aber wir haben keine Lösung. Denn wenn Sie auf eine Schaltfläche des Assistenten klicken, wird der Assistent automatisch zerstört.
Aber Sie können diese Methode mit der Methode write onchange eines beliebigen Feldes ausführen.
Sie können mit der Schaltfläche einen anderen Assistenten öffnen, der den Kontext mit allen Werten übergibt, die im ersten Assistenten eingegeben wurden. Dadurch können Sie eine Funktion ausführen, z. dein Knopf. Und behalte den Status deines Assistenten bei. Daher muss der Standardwert für die Felder in Ihrem Assistenten zuerst den Kontext und dann den Fallback auf etwas anderes überprüfen.
Hier ist ein Beispiel:
%Vor%Tags und Links python xml python-2.7 odoo-8 odoo