TL; DR
AnyOfバリデーションがSelectMultipleFieldに対応していないため。
カスタムバリデーションを用いる必要がある。
詳細
AnyOfバリデーションの実装をみると、SelectMultipleFieldに対応していません。
SelectMultipleFieldの場合、field.dataがlist型で渡ってくるので562行目が常にTrueを返してしまいます。
解決策
こんな感じでSelectMultipleField用のバリデーションを作成してあげれば良いです。
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