2016-09-08 3 views
0

У меня есть SelectMultipleField, который заселен/изменен во время выполнения с использованием JavaScript. Моя проблема в том, что это нарушает валидатор, поэтому вызов form.validate_on_submit() всегда терпит неудачу.WTForms SelectMultipleField: отключить проверку

SelectMultipleField('Test', coerce=int) 

Я уже пытался установить свой собственный валидатор, который ничего не делает:

def dummy_validator(form, field): 
    print("check: "+str(field.data)) 

SelectMultipleField('Test', coerce=int, [dummy_validator]) 

Однако это до сих пор не удается. Например, я получаю сообщение об ошибке '7' is not a valid choice for this field.

Что нужно сделать, чтобы SelectMultipleField прошел процесс проверки, начатый form.validate_on_submit()?

ответ

3

Проблема заключается в том, что pre_validation всегда выполняется перед выполнением любых указанных валидаторов. Поэтому dummy_validator в моем вопросе не изменит этого поведения.

Единственный способ изменить это для реализует собственное поле, которое является производным от SelectMultipleField:

class NoValidationSelectMultipleField(SelectMultipleField): 
    def pre_validate(self, form): 
     """per_validation is disabled""" 

После этого можно непосредственно использовать поле в форме:

NoValidationSelectMultipleField('Test', coerce=int) 
+0

Это работало для меня очень похожая проблема, когда я динамически создавал опции в скрытом поле с jquery, и форма жаловалась на ту же ошибку. Означает ли это, что мне нужно написать специальную проверку после form.validate_on_submit? – waldopat

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