sqlform不显示错误消息,然后出现错误 error1 detail ps。我的目标是创建一个包含13个数字的字段,该数字与其他数字不同
我尝试删除require == IS_LENGTH(maxsize = 13,minsize = 13)然后sqlform工作正常,但是我无法检查其中哪个字符串等于13的这些方法
db.define_table('person',
Field('h_id_card',unique=True,requires=IS_LENGTH(maxsize=13,minsize=13))
)
def add():
form = SQLFORM(db.person).process()
return locals()
我希望sqlform将显示错误消息,而不是被接受
答案 0 :(得分:1)
来自book:
请注意,
requires=...
是在表单级别强制执行的,required=True
是在DAL(插入)级别强制执行的,而notnull
,unique
和{{ 1}}在数据库级别强制执行。尽管有时看起来有些多余,但在使用DAL进行编程时,必须保持区别。
因为ondelete
转换为unique=True
SQL语句,所以当插入/更新违反唯一性约束时,您只是从数据库中得到一个错误,从而在数据库驱动程序中生成异常,最终如果您未捕获,则会在您的应用代码中生成异常。
如果您想针对唯一性要求启用表单验证,则应使用IS_NOT_IN_DB
validator:
UNIQUE