如何自定义 web2py 中的 DB(或表单)验证器?
这是我定义的两个表:
db.define_table('question',
Field('category_id',db.category),
Field('content'),
Field('number_of_options','integer'),
Field('has_options_detail','boolean',default=False)) ## Has or not has detail for each option
db.define_table('options_detail', ## This table only for options that have detail explanation
Field('question_id',db.question),
Field('serial'), ## Option ordering
Field('detail')) ## Detail explanation of option
我该怎么做才能限制:db.options_detail表里的question_id必须属于那些“has_options_detail == True”的问题?
提前谢谢你们!
1 个回答
2
这样做就可以了:
db.options_detail.question_id.requires = IS_IN_DB(
db(db.question.has_options_detail==True), 'question.id')
需要注意的是,IS_IN_DB 验证器可以把一个 DAL 集合对象作为第一个参数(具体可以查看这里),这样你就可以根据任何条件来过滤引用的表。
(你也可以直接在 Field()
声明中指定上面的 requires
参数。)