Show some checkboxes for each component: e.g. something like this...
db.define_table('ingredient', Field('name','string',length=100), Field('kind',requires=IS_IN_SET(['alcohol','mixer','garnish']), format='%(name)s', ) Table Drink ... Field('ingredient_garnish','list:reference ingredient',label='Garnish List',length=100, widget=lambda f, v: SQLFORM.widgets.checkboxes.widget(f, v, style='divs')), .... db.drink.ingredient_garnish.requires=IS_EMPTY_OR(IS_IN_DB(db(db.ingredient.kind=='garnish') ,db.ingredient.id,'%(name)s',multiple=True)) I don't have time to adapt to your models etc but I thought the above might be of interest for you to experiment. Regards, David --