Yes, web2py has lots of neat tricks. Rather than a whole db connection, the IS_IN_DB validator can also take a DAL Set to limit the records shown -- see http://web2py.com/book/default/chapter/07#Database-Validators.
On Monday, June 27, 2011 4:44:52 PM UTC-4, mweissen wrote: > Oooops - thank you very much. > I think I could have found the difference between "color" and "colors" > myself :-( > > About the solution: it works very well and it is very import for my > project. > I have tried to find a solution for several hours and now I have got it in > 10 minutes. > > web2py is great! Thank you both again! > > 2011/6/27 Anthony <[email protected]> > >> It's just a typo -- db.color.gr and db.color.id should be db.colors.grand >> db.colors.id. >> >> Anthony >> >> On Monday, June 27, 2011 4:35:01 PM UTC-4, mweissen wrote: >> >>> Hi Massimo, >>> looks great. But I got: >>> >>> web2py™ Version 1.97.1 (2011-06-26 19:25:44) Python Python 2.5.4: >>> C:\Web2Py\web2py_win\web2py\**web2py.exe TRACEBACK >>> >>> 1. >>> 2. >>> 3. >>> 4. >>> 5. >>> 6. >>> 7. >>> 8. >>> 9. >>> >>> Traceback (most recent call last): >>> >>> >>> >>> >>> File "gluon/restricted.py", line 192, in restricted >>> >>> >>> >>> >>> File >>> "C:/Web2Py/web2py_win/web2py/**applications/test16rechte/**controllers/default.py" >>> >>> <http://127.0.0.1:8000/admin/default/edit/test16rechte/controllers/default.py>, >>> line 88, in <module> >>> >>> >>> >>> >>> File "gluon/globals.py", line 137, in <lambda> >>> >>> >>> >>> >>> File >>> "C:/Web2Py/web2py_win/web2py/**applications/test16rechte/**controllers/default.py" >>> >>> <http://127.0.0.1:8000/admin/default/edit/test16rechte/controllers/default.py>, >>> line 84, in newperson >>> >>> >>> >>> >>> File "gluon/dal.py", line 4255, in __getattr__ >>> >>> >>> >>> >>> File "gluon/dal.py", line 4249, in __getitem__ >>> >>> >>> >>> >>> KeyError: 'color' >>> >>> >>> >>> ERROR SNAPSHOT [image: help] >>> >>> <type 'exceptions.KeyError'>('color'**) >>> >>> 2011/6/27 Massimo Di Pierro <[email protected]> >>> >>>> yes >>>> >>>> db.person.color.requires=IS_**IN_DB(db(db.color.gr=='A'),db.**color.id<http://db.color.id> >>>> ,'% >>>> (color)s') >>>> form=SQLFORM(db.person) >>>> >>>> On Jun 27, 3:12 pm, Martin Weissenboeck <[email protected]> wrote: >>>> > Hi, >>>> > I need a SQLFORM with a special drop-box with a subset of values. >>>> > >>>> > This is a simplified example, the whole problem is a little bit more >>>> > complex: Let's make two tables: >>>> > >>>> > db.define_table('colors', >>>> > Field('color'), >>>> > Field('gr'), # group >>>> > format='%(color)s', >>>> > ) >>>> > >>>> > db.define_table('person', >>>> > Field('name'), >>>> > Field('color','list:reference colors'), >>>> > ) >>>> > >>>> > I fill the first table: >>>> > >>>> > def newcolors(): >>>> > db.colors.truncate() >>>> > db.colors.bulk_insert([ >>>> > {'color':'yellow', 'gr':'B'}, >>>> > {'color':'green', 'gr':'A'}, >>>> > {'color':'blue', 'gr':'A'}, >>>> > {'color':'red', 'gr':'B'}, >>>> > {'color':'white', 'gr':'B'}, >>>> > {'color':'black', 'gr':'B'}, >>>> > ]) >>>> > >>>> > And now there is the SQLFORM for a new person: >>>> > >>>> > def newperson(): >>>> > form=SQLFORM(db.person) >>>> > return dict(form=form) >>>> > >>>> > The form contains a SELECT/OPTION multiple drop-box for the colors >>>> *black to >>>> > yellow.* >>>> > >>>> > My question: is it possible to have three different forms >>>> > >>>> > - a drop-box which contains only the colors of group A (green, >>>> blue) >>>> > - a drop-box which contains only the colors of group B (yellow, >>>> red, >>>> > white, black) >>>> > - a drop-box with all color >>>> > >>>> > Something like >>>> > >>>> > form=SQLFORM(db.person, colors_for_select=[1,2]) >>>> > >>>> > Regards, >>>> > Martin >>>> >>> >>> >>> >>>

