如何在openerp中显示消息框?我是用提高这样的:Openerp显示消息对话框
raise osv.except_osv(_("Warning!"), _("Error"))
但这停止执行其他的代码,我只是想显示一个信息消息框。
如何在openerp中显示消息框?我是用提高这样的:Openerp显示消息对话框
raise osv.except_osv(_("Warning!"), _("Error"))
但这停止执行其他的代码,我只是想显示一个信息消息框。
一种方式在我脑海...你可以使用一些on_change
方法会返回字典是这样的:
return {
'warning': {
'title':'Message title!',
'message':'Your message text goes here!'
}
}
这需要用户实际改变某些东西,我也可以使用_constraint来触发它,但这也需要改变。例如,我需要通过打开客户来显示消息。 – RandomPerson
然后我建议你在模型中添加一些虚拟字段(boolean或char)(例如,我们称之为“show_message”)。将该字段添加到_defaults = {'show_message':True}并将on_change方法绑定到该字段。这样,当用户打开表单视图时,将运行on_change方法并显示消息。 – gordian1983
这不会起作用on_change要求用户更改该特定字段。以代码方式操作它不会触发on_change – RandomPerson
提高了osv.except_osv
做了几件事情:
1)中断目前的处理(毕竟它是一个python例外)。
2)导致OpenERP回滚当前数据库事务。
3)导致的OpenERP显示一个对话框,用户,而不是倾销堆栈跟踪,并给人一种“坏的东西发生”消息的用户。
对于平变化,我们可以回到
warning = {
'title': 'Warning!',
'message' : 'Your message.'
}
return {'warning': warning}
但它不会对其他像按钮的工作。
对于你的情况,你可以做
cr.commit()
raise osv.except_osv(_("Warning!"), _("Error"))
但在商业交易调用cr.commit
明确会导致严重的问题。
另一种方式是你可以返回一个带有警告信息的向导。这是大多数人使用的。
return {
'name': 'Provide your popup window name',
'view_type': 'form',
'view_mode': 'form',
'view_id': [res and res[1] or False],
'res_model': 'your.popup.model.name',
'context': "{}",
'type': 'ir.actions.act_window',
'nodestroy': True,
'target': 'new',
'res_id': record_id or False,##please replace record_id and provide the id of the record to be opened
}
如果你不想破坏代码,你需要依靠向导来弹出警告。 –