2010-12-30 4 views
1

Поиск по gluon.validators я наткнулся IS_LIST_OF() так что я пытался добавить его в моей модели:Как проверить список: строковые поля с web2py?

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

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

ответ

3

Из чего я могу сказать, отлаживая, валидаторы удаляются из списка: * поля по какой-то причине. Это должно быть ошибка. Вы можете обойти его, используя атрибут 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) 
+0

Эта ошибка, как представляется, фиксируется по состоянию на сегодняшний день. Однако это пригодилось. – Encompass

Смежные вопросы