Мне нужен был валидатор, который я мог просто вставить в поле, такое как валидаторы String и Int. Я обнаружил, что не было никакого способа сделать это, если я не создал свой собственный валидатор. Я публикую это здесь для полноты картины, чтобы другие могли извлечь выгоду.
from formencode import FancyValidator, Invalid
from formencode.validators import Email
class EmailList(FancyValidator):
""" Takes a delimited (default is comma) string and returns a list of validated e-mails
Set the delimiter by passing delimiter="A_DELIMITER" to the constructor.
Also takes all arguments a FancyValidator does.
The e-mails will always be stripped of whitespace.
"""
def _to_python(self, value, state):
try:
values = str(value).split(self.delimiter)
except AttributeError:
values = str(value).split(',')
returnValues = []
emailValidator = Email()
for value in values:
returnValues.append( emailValidator._to_python(value.strip(), state) )
return values