这是关于我关于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)'))
答案 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'])]