2016-04-26 3 views
0

Это со ссылкой на мой вопрос о Client side validation in openerpOpenERP

мне нужно уточнить его еще более и, пожалуйста, будьте любезны, чтобы помочь мне с этим.

Что мне нужно знать, хотя я проверил значение и получил сообщение об ошибке, когда результат был ложным; как только сообщение об ошибке закрывается, я все же могу сохранить неверно введенное значение.

Пожалуйста, помогите мне избежать этого, пока вы не введете правильное значение, с которым вы не можете продолжить.

проверки поля будет,

'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

Вы можете назвать 'check_start_time' функцию еще один раз в' write' или 'create' метода то он не может быть сохранено до правильного значения . – SDBot

+0

Существует один метод создания уже в классе, можно ли снова вызвать другой метод создания для того же класса? Большое вам спасибо за быструю поддержку btw ... –

+0

Не можете ли вы просто отредактировать существующий метод 'create'? – SDBot

ответ

1

Вы можете переопределить методы по умолчанию в модели. Вам не нужен новый метод создания, если он у вас есть. Просто вставьте условие поля.
(В вашем случае вы должны переопределить как создание, так и запись, потому что создайте прогон, когда пользователь хочет создать новую запись и выполнить запись, когда пользователь хочет обновить запись.)

Другое решение, когда вы используете ограничения ,

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.

Смежные вопросы