客户端验证Openerp

时间:2016-04-26 04:10:13

标签: python python-2.7 openerp openerp-7

这是关于我关于Client side validation in openerp

的问题

我需要进一步澄清它,请善待我帮助。

我需要知道的是,即使我检查了值并在结果为false后得到错误消息;一旦错误消息关闭,我仍然可以保存错误输入的值。

在您输入正确的值之前,请帮助我避免这种情况。

检查字段将是,

'start_time': fields.char('Start Time'),

,功能将是,

def check_start_time(self,cr,uid,ids,start_time_check,context=None):
    starting_time=start_time_check
    try:
        time.strptime(starting_time, "%H:%M")
        return True
    except ValueError:
        raise osv.except_osv(('Error'), ('Start time not in hh:mm format (Eg: 08:30)'))

1 个答案:

答案 0 :(得分:1)

您可以覆盖模型中的默认方法。如果您有新的创建方法,则不需要新的创建方法。只需插入您的现场条件 (在您的情况下,您必须覆盖create和write两者,因为当用户想要创建新记录时创建运行,而当用户想要更新记录时编写运行。)

当你使用约束时,另一个解决方法。

<强>的Python

def create(self, cr, uid, vals, context=None):
    try:
        time.strptime(starting_time, "%H:%M")
     except ValueError:
         raise osv.except_osv(('Error'), ('Start time not in hh:mm format (Eg: 08:30)'))
    # do something
    return super(ModelName, self).create(cr, uid, vals, context)

def write(self, cr, uid, vals, context=None):
    try:
        time.strptime(starting_time, "%H:%M")
     except ValueError:
         raise osv.except_osv(('Error'), ('Start time not in hh:mm format (Eg: 08:30)'))
    # do something
    return super(ModelName, self).write(cr, uid, vals, context)



def _check_startTime(cr, uid, ids):
    try:
        time.strptime(starting_time, "%H:%M")
        return True
     except ValueError:
        return False

_constraints = [(_check_startTime, 'Invalid format!', ['start_time'])]

Here is a very useful cheat sheet.