如何显示 openerp 错误信息
how to display openerp error message
在我的学生模块中,我继承了 res.partner。如果合作伙伴是学生,我想限制在合作伙伴视图中修改名称。这是我的数据线。
from openerp.osv import osv, fields
class res_partner(osv.Model):
_inherit = 'res.partner'
_columns = {
'name': fields.char('Name', size=250, required=True, select=True),
'is_student': fields.boolean('Student', readonly=True),
}
def write(self, cr, uid, ids, vals, context=None):
stud = self.browse(cr, uid, ids, context=context)[0]
if ('name' in vals) & (stud.is_student is True):
raise "Cannot Edit"
else:
return super(res_partner, self).write(cr, uid, ids, vals, context=context)
它正在运行,但我想在消息框中显示错误消息。也不例外。我该怎么做?
raise osv.except_osv(('Error'), ('Error Cannot Edit'))
关于@Damian 的回答,osv.except_osv 在源代码中被标记为已弃用,但实际上并没有被弃用,因为它仍然存在于很多 Odoo 代码中。有更新的 openerp.exceptions.except_orm 和更新的警告。至少可以说是令人困惑。
还有,别忘了翻译。以except_orm为例。
from openerp.exceptions import except_orm
from openerp.tools.translate import _
raise osv.except_osv(_('Error!'), _("Something bad happened."))
或:
from openerp import _
from openerp.exceptions import Warning
raise Warning(_('Something bad happened.'))
查看 return 部分,这可能会对您有所帮助。
def check_partners_email(self, cr, uid, partner_ids, context=None):
""" Verify that selected partner_ids have an email_address defined.
Otherwise throw a warning. """
partner_wo_email_lst = []
for partner in self.pool.get('res.partner').browse(cr, uid, partner_ids, context=context):
if not partner.email:
partner_wo_email_lst.append(partner)
if not partner_wo_email_lst:
return {}
warning_msg = _('The following contacts have no email address :')
for partner in partner_wo_email_lst:
warning_msg += '\n- %s' % (partner.name)
return {'warning': {
'title': _('Email addresses not found'),
'message': warning_msg,
}
您甚至可以将警告与要在输入字段中设置的替代值结合起来,如下所示:
if not start_date < end_date:
return {
'warning': {
'title': _('Warning'),
'message': _('End date must be bigger than start date'),
},
'value': {
'elec_end_agreement':
self.get_end_date(cr, uid, pp_id, start_date)
},
}
看到这个link:https://www.odoo.com/forum/how-to/developers-13/what-should-onchange-methods-do-and-return-57760
在我的学生模块中,我继承了 res.partner。如果合作伙伴是学生,我想限制在合作伙伴视图中修改名称。这是我的数据线。
from openerp.osv import osv, fields
class res_partner(osv.Model):
_inherit = 'res.partner'
_columns = {
'name': fields.char('Name', size=250, required=True, select=True),
'is_student': fields.boolean('Student', readonly=True),
}
def write(self, cr, uid, ids, vals, context=None):
stud = self.browse(cr, uid, ids, context=context)[0]
if ('name' in vals) & (stud.is_student is True):
raise "Cannot Edit"
else:
return super(res_partner, self).write(cr, uid, ids, vals, context=context)
它正在运行,但我想在消息框中显示错误消息。也不例外。我该怎么做?
raise osv.except_osv(('Error'), ('Error Cannot Edit'))
关于@Damian 的回答,osv.except_osv 在源代码中被标记为已弃用,但实际上并没有被弃用,因为它仍然存在于很多 Odoo 代码中。有更新的 openerp.exceptions.except_orm 和更新的警告。至少可以说是令人困惑。
还有,别忘了翻译。以except_orm为例。
from openerp.exceptions import except_orm
from openerp.tools.translate import _
raise osv.except_osv(_('Error!'), _("Something bad happened."))
或:
from openerp import _
from openerp.exceptions import Warning
raise Warning(_('Something bad happened.'))
查看 return 部分,这可能会对您有所帮助。
def check_partners_email(self, cr, uid, partner_ids, context=None):
""" Verify that selected partner_ids have an email_address defined.
Otherwise throw a warning. """
partner_wo_email_lst = []
for partner in self.pool.get('res.partner').browse(cr, uid, partner_ids, context=context):
if not partner.email:
partner_wo_email_lst.append(partner)
if not partner_wo_email_lst:
return {}
warning_msg = _('The following contacts have no email address :')
for partner in partner_wo_email_lst:
warning_msg += '\n- %s' % (partner.name)
return {'warning': {
'title': _('Email addresses not found'),
'message': warning_msg,
}
您甚至可以将警告与要在输入字段中设置的替代值结合起来,如下所示:
if not start_date < end_date: return { 'warning': { 'title': _('Warning'), 'message': _('End date must be bigger than start date'), }, 'value': { 'elec_end_agreement': self.get_end_date(cr, uid, pp_id, start_date) }, }
看到这个link:https://www.odoo.com/forum/how-to/developers-13/what-should-onchange-methods-do-and-return-57760