То, что я хотел, было валидатором, который я мог бы просто вставить в поле, например, для валидаторов 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
Интересно, мне нравится обновление. – Robbie
Хотя строка 13 должна возвращать значения: значения = validator.to_python (значения, состояние) – Robbie