通过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
),但验证不会发生。
答案 0 :(得分:3)
从我通过调试可以看出,验证器由于某种原因从list:*字段中删除。这一定是个bug。您可以使用form.accepts的onvalidation属性来解决它。这是一个例子:
在你的模特中:
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)