Как настроить валидатор БД (или формы) в web2py? - PullRequest
2 голосов
/ 11 сентября 2011

Вот мое определение двух таблиц:

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 голосов
/ 11 сентября 2011

Это должно сделать это:

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

Обратите внимание, что валидатор IS_IN_DB может принимать объект DAL Set в качестве первого аргумента (см. здесь ), что позволяет фильтровать ссылочную ссылкутаблица на основе любых критериев.

(Вы также можете указать приведенный выше аргумент requires непосредственно в объявлении Field().)

...