Renvoie toujours une erreur lorsque la validation AnyOf est SelectMultipleField dans WTForms

TL; DR La validation AnyOf ne prend pas en charge Select Multiple Field. Vous devez utiliser la validation personnalisée.

Détails

En regardant l'implémentation de la validation AnyOf, il ne prend pas en charge SelectMultipleField. Dans le cas de SelectMultipleField, field.data est passé en tant que type de liste, donc la ligne 562 renvoie toujours True.

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

Solution

Vous pouvez créer une validation pour Select Multiple Field comme ceci.


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

Renvoie toujours une erreur lorsque la validation AnyOf est SelectMultipleField dans WTForms
nltk.MaxentClassifier.train () renvoie une erreur.
Renvoie toujours une erreur lorsque la validation AnyOf est SelectMultipleField dans WTForms
OperationalError: (psycopg2.OperationalError) donne une erreur
Une erreur s'est produite dans l'imputer de scikit-learn
[Python] Que faire lorsqu'une erreur liée à l'authentification SSL est renvoyée