如何在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
}
如果你不想破壞代碼,你需要依靠嚮導來彈出警告。 –