[PYTHON] Gibt immer einen Fehler zurück, wenn die AnyOf-Validierung in WTForms SelectMultipleField ist

TL; DR AnyOf-Validierung unterstützt Select Multiple Field nicht. Sie müssen eine benutzerdefinierte Validierung verwenden.

Einzelheiten

In Bezug auf die Implementierung der AnyOf-Validierung wird SelectMultipleField nicht unterstützt. Im Fall von SelectMultipleField wird field.data als Listentyp übergeben, sodass Zeile 562 immer True zurückgibt.

https://github.com/wtforms/wtforms/blob/23f730a9cfca478f01fda2b38fde17ad56e9a83d/src/wtforms/validators.py#L562

Lösung

Sie können eine Validierung für Select Multiple Field wie folgt erstellen.


def anyof_for_multiple_field(values):
  message = 'Invalid value, must be one of: {0}.'.format( ','.join(values) )

  def _validate(form, field):
    error = False
    for value in field.data:
      if value not in values:
        error = True

    if error:
      raise ValidationError(message)

  return _validate

Recommended Posts

Gibt immer einen Fehler zurück, wenn die AnyOf-Validierung in WTForms SelectMultipleField ist
nltk.MaxentClassifier.train () löst einen Fehler aus.
Gibt immer einen Fehler zurück, wenn die AnyOf-Validierung in WTForms SelectMultipleField ist
OperationalError: (psycopg2.OperationalError) gibt einen Fehler aus
Beim Imputator von Scikit-Learn ist ein Fehler aufgetreten
[Python] Was tun, wenn ein Fehler im Zusammenhang mit der SSL-Authentifizierung zurückgegeben wird?