如何在web2py中自定义DB(或Form)验证器?

时间:2011-09-11 06:54:25

标签: python web2py

以下是我的2个表格定义:

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 个答案:

答案 0 :(得分:2)

这应该这样做:

db.options_detail.question_id.requires = IS_IN_DB(
    db(db.question.has_options_detail==True), 'question.id')

注意,IS_IN_DB验证器可以将DAL Set对象作为第一个参数(请参阅here),这使您可以根据任何条件筛选引用的表。

(您也可以直接在requires声明中指定上述Field()参数。)