I found that the way to make this work is to set the filtering
("requires" directive) in the controller instead of in the model.

:)


On Aug 12, 2:40 pm, noelrv <noe...@gmail.com> wrote:
> I have issues implementing a filtered list of tags in a crud form
> dropdown.
>
> In the models below, each book belongs to a category and has one or
> more tags. Each category has a specified set of tags by defining
> tag.categories as a list:reference.
>
> The crud form dropdown shows a filtered tag list if I explicitly
> specify a value for "contains":
>      categorytags = db(db.tag.categories.contains(6))
> but not, if I use:
>      categorytags = db(db.tag.categories.contains(db.book.category))
>
> db.define_table('category',
>     Field('name'), format='%(name)s')
>
> db.define_table('tag',
>     Field('name'),
>     Field('categories','list:reference category'), format='%(name)s')
>
> db.define_table('book',
>     Field('title'),
>     Field('category',db.category),
>     Field('tags','list:reference tag'))
> categorytags = db(db.tag.categories.contains(db.book.category))
> db.book.tags.requires=IS_IN_DB(categorytags,'tag.id',db.tag._format,multiple=True)

Reply via email to