2010-12-30 8 views
1

Suche durch gluon.validators ich auf IS_LIST_OF() kam so versuchte ich es zu meinem Modell hinzuzufügen:Wie validiere ich Liste: String Felder mit web2py?

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

ich festgestellt, dass der Empfänger in die Datenbank korrekt hinzugefügt (ich verwende SQLFORM durch die Art und Weise), aber die Validierung nur doesn‘ t passiert.

Antwort

3

Von was ich durch das Debuggen sagen kann, werden Validatoren aus der Liste entfernt: * Felder aus irgendeinem Grund. Dies muss ein Fehler sein. Sie können dies umgehen, indem Sie das onvalidation-Attribut von form.accepts verwenden. Hier ein Beispiel:

In Ihrem Modell:

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")) 

In Ihrem Controller:

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

Dieser Fehler scheint wie heute festgelegt werden. Es war jedoch sehr praktisch. – Encompass

Verwandte Themen