Flask-WTForms Как обойти автоматическую предварительную проверку для радиополей

Я пытаюсь создать форму с двумя полями отправки — фильтром и отправкой. Для фильтра у меня есть поле выбора со списком имен, и если они выбирают имя, я хочу отфильтровать существующую страницу на основе этого имени. Для отправки у меня есть радио-поле, и я хочу перейти на другую страницу в зависимости от выбора. Для фильтра я не хочу никакой проверки радиополя, а для отправки я не хочу никакой проверки поля выбора.

Кажется, это нормально работает с моим полем выбора — оно проверяется только тогда, когда я нажимаю кнопку «Фильтр». Но для радиополя он всегда проверяется, и я получаю следующее, независимо от того, какую кнопку я нажимаю:

[Недействительный выбор]

Вот мои фрагменты кода. HTML:

<h2>Filter</h2> <p> {{ form.player.label }}<br> {{ form.player }} {% for error in form.player.errors %} <span style=»color: red;»>[{{ error }}]</span> {% endfor %} </p> <p>{{ form.filter() }}</p> <h2>Games to be played</h2> <p> {{ form.result.label }}<br> {{ form.result }} {% for error in form.result.errors %} <span style=»color: red;»>[{{ error }}]</span> {% endfor %} </p> <p>{{ form.submit() }}</p>

Форма:

class MatchupsForm(FlaskForm): player = SelectField(u’Filter by Player’, coerce=int) filter = SubmitField(‘Filter’) result = RadioField(u’Select Game to Update’, coerce=int) submit = SubmitField(‘Update’) def validate_player(self, player): if (player.data == 0) and self.filter.data: raise ValidationError(«Please select a Name to filter on») return False return True def validate_result(self, result): if not result.data and self.submit.data: raise ValidationError(«Please select a Matchup») return False return True

Я пробовал предложение из Flask-WTForms Как сделать переопределить предварительную проверку на Radio Fields, создав

def pre_validate(self, form): for v, _ in self.choices: if self.data == v: break else: raise ValueError(self.gettext(‘Need a Matchup’))

Но и это не сработало — я получаю ту же ошибку. Обратите внимание, что мои дополнительные валидаторы, похоже, работают правильно — когда я нажимаю «Фильтр без выбора игрока», я вижу эту ошибку, но если я нажимаю «Отправить без выбора результата», я вижу как ошибку по умолчанию, так и мою настроенную.

[Недействительный выбор] [Пожалуйста, выберите матч]

Цените любые идеи о том, как заставить эту работу работать.

Источник: ledsshop.ru

Стиль жизни - Здоровье!