Как проверить список: строковые поля с помощью web2py? - PullRequest
1 голос
/ 30 декабря 2010

Поиск по gluon.validators Я наткнулся на IS_LIST_OF(), поэтому я попытался добавить его в свою модель:

db.define_table("emails_list",
    Field("recipients", "list:string", requires=IS_LIST_OF(IS_EMAIL(
        error_message="Invalid email")))
)

Я проверил, что получатели правильно добавлены в базу данных (кстати, я использую SQLFORM), но проверки просто не происходит.

1 Ответ

3 голосов
/ 17 апреля 2011

Из того, что я могу сказать через отладку, валидаторы убраны из списка: * поля по какой-то причине.Это должно быть ошибка.Вы можете обойти это, используя атрибут onvalidation в form.accepts.Вот пример:

В вашей модели:

def validate_email(form):
    for eml in form.vars.recipients:
        out,ers = IS_EMAIL()(eml)
        if ers:
            form.errors.receipients = ers

db.define_table("emaillist",
    Field("recipients", "list:string"))

В вашем контроллере:

def listtest():
    form = SQLFORM(db.emaillist)
    if form.accepts(request.vars,session,
                    onvalidation=validate_email):
        response.flash = "Got it"
    else:
        response.flash = form.errors
    return dict(form=form)
...