Как заставить Pylons formencode validator игнорировать некоторые поля

У меня есть форма, которая имеет несколько входных текстовых полей, а также несколько полей выбора. У меня есть проверка работает отлично на текстовых полях. Мне все равно, если какое-либо из полей выбора оставлено по умолчанию или нет, но каждый раз, когда я отправляю форму, она переходит на страницу с ошибкой пилонов, говоря: "Неверно: введите значение для..." Но я не хочу, чтобы бывает.

вот моя функция валидатора:

class Registration(formencode.Schema):
    allow_extra_fields=True
    first_name = formencode.validators.String(strip=True, not_empty=True)
    last_name = formencode.validators.String(strip=True, not_empty=True)
    address = formencode.validators.String(strip=True, not_empty=True)
    phone = formencode.validators.PhoneNumber(strip=True, not_empty=True)
    email = formencode.validators.Email(resolve_domain=True, not_empty=True)
    messages = {
        'tooLow': "You must be at least 18 in order to register for an event.",
        'tooHigh': "You obviously are not that old.  Please enter your actual age.",
    }
    age = formencode.validators.Int(min=18, max=999, not_empty=True, messages=messages)

Я думал, что с allow_extra_fields = True это позволило бы пропустить поля в форме, которые не предоставлены в функции, если оставить пустым / по умолчанию. У меня есть флажки с именем слышал, частота и уровень, которые следует игнорировать.

Любая помощь здесь будет принята с благодарностью.

2 ответа

На ваше formencode.validators методы:

  • использование not_empty=False если ваша форма отправляет поля и значения являются пустыми строками. Параметр not_empty false - это то, как вы говорите: empty - допустимое значение.
  • Если поля не существуют, используйте if_missing = None который установит ваш результат на None,

Я думаю, что вы должны добавить следующую строку к нему

filter_extra_fields = True

Другие вопросы по тегам