TL; DR La validation AnyOf ne prend pas en charge Select Multiple Field. Vous devez utiliser la validation personnalisée.
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
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