Odoo v9。
我想在执行某些python代码之前使用yes / no选项提示用户。
如果这是按钮,我可以使用confirm ="文本?"属性,但我不想触发任何数据库更新,无论用户是否回答此特定提示。
e.g。 onchange事件触发是/否框,然后可以操作页面,但用户仍然必须按"保存"保持任何变化。
使用基础odoo有没有办法做到这一点?
答案 0 :(得分:2)
onchange
个事件无法返回对话框,因为它们根本不是为了这样做而构建的https://www.odoo.com/forum/how-to/developers-13/what-should-onchange-methods-do-and-return-57760
您可以使用向导(它不是真正的向导,它只是一个表单)并将其显示为弹出窗口。我们的wizard model
将是Transient
模型,在指定的时间后会被odoo丢弃。
from openerp import fields, models, api
class test_model(models.Model):
_name = 'test.model'
name = fields.Char(string='Value')
@api.multi
def call_up_wizard(self):
return {
'name': 'Are you sure?',
'type': 'ir.actions.act_window',
'res_model': 'wizard',
'view_mode': 'form',
'view_type': 'form',
'target': 'new',
}
class wizard(models.TransientModel):
_name = 'wizard'
yes_no = fields.Char(default='Do you want to proceed?')
@api.multi
def yes(self):
pass
# sure continue!
@api.multi
def no(self):
pass # don't do anything stupid
这就是你的观点的样子
<record id="cashadvance_list" model="ir.ui.view">
<field name="name">Test Dialog</field>
<field name="model">test.model</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Test Dialog" version="8.0">
<group>
<button class="oe_highlight" name="call_up_wizard" string="confirm" type="object" />
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="wizard_form">
<field name="name">wizard.form</field>
<field name="model">wizard</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Confirm dialog">
<field name="yes_no" readonly="1" />
<footer>
<button class="oe_highlight" name="yes" string="Yes" />
<button class="oe_highlight" name="no" string="No" />
</footer>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_test">
<field name="name">Cash advance list</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">test.model</field>
<field name="view_type">form</field>
<field name="view_mode">form,tree</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
It's empty, create something
</p>
</field>
</record>
在我们的test_model
视图中,我们有一个按钮,显示wizard
作为弹出窗口,然后在向导按钮分别由yes
和no
方法处理,这使您可以更好地控制按钮,因为您知道有单独的方法来控制表单上的两个按钮。
我刚才给出了这个答案,对于碰巧偶然发现这个帖子并且想知道如何从按钮创建弹出窗口的人来说。