如何显示openerp错误消息

2024-06-06 05:45:18 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的学生模块中,我继承了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)

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


Tags: nameselftrueidsfieldspartneruidis
3条回答

关于@Damian的答案,osv.except_osv在源代码中被标记为已弃用,但实际上还没有被弃用,因为它仍然存在于许多Odoo代码中。有一个更新的openerp exceptions.exceptions.exceptions。至少可以说是令人困惑。

还有,别忘了翻译。以except形式为例。

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.'))

您甚至可以将警告与要在inputfield中设置的可选值结合起来,如下所示:

   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)
           },
       }

请参阅此链接:https://www.odoo.com/forum/how-to/developers-13/what-should-onchange-methods-do-and-return-57760

raise osv.except_osv(('Error'), ('Error  Cannot Edit'))

相关问题 更多 >