以下是我的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”的问题
提前致谢!
答案 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()
参数。)