2017-02-01 5 views
2

Я собираю форму с использованием Flask & WTForms, однако, когда дело доходит до выпадающих списков, я хочу, чтобы для каждого выпадающего списка была выбрана опция «выберите», по выбранным причинам проверка должна быть ложной, например. значение еще не выбрано.wtforms validating dropdown values ​​

Должен ли я использовать проверку регулярных выражений или пользовательскую проверку для этого? Если мне нужна специальная проверка, то как мне ее построить?

CAR_MAKES = [('-1', "Please select a vehicle make..."), (1, 'Honda'), 
(2, 'Ford'), (3, 'BMW')] 
dd_car_makes = SelectField('dd_car_makes', choices=CAR_MAKES, 
validators=[DataRequired()]) 

ответ

0

Здесь вы можете воспользоваться специальным валидатором. Посмотрите на Custom Validators in the WTForms Documentation.

def your_validator(form, field): 
    if field.data == -1: 
     raise ValidationError('Please select a vehicle make...') 

dd_car_makes = SelectField('dd_car_makes', choices=CAR_MAKES, 
          validators=[DataRequired(), your_validator]) 
+0

Это работает для меня, спасибо. – FlipflopPancake

0

Вам просто нужно дать свой вариант «Пожалуйста, выберите» неофициальный truthy значение и использовать стандартные валидаторы:

SelectField('Car', coerce=int, 
      choices=[(0, 'Please Select...'), (1, 'Honda')], 
      validators=[DataRequired()]) 
+0

Спасибо, Бартлетт. Я не ожидал, что он будет работать таким образом, но это произошло. – FlipflopPancake