如何显示openerp错误信息

Cha*_*mal 6 python openerp openerp-7 odoo

在我的学生模块中,我继承了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)
Run Code Online (Sandbox Code Playgroud)

它工作,但我想在消息框中显示错误消息.不例外.我怎么能这样做?

小智 6

raise osv.except_osv(('Error'), ('Error  Cannot Edit'))
Run Code Online (Sandbox Code Playgroud)


Adr*_*all 6

关于@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."))
Run Code Online (Sandbox Code Playgroud)

要么:

from openerp import _
from openerp.exceptions import Warning

raise Warning(_('Something bad happened.'))
Run Code Online (Sandbox Code Playgroud)