Hi Bill, Did you try you set into the web2py shell to see if it returns something?
I usually try my query in a terminal web2py shell to make sure my query are good before waisting time in navigator reloading page. Here how you can start a web2py shell : cd into the web2py folder Than : python web2py.py -a 'tempory_pwd' -i 127.0.0.1 -p 8001 -S appname -M auto Under linux... It should be similar under windows. Richard On Mon, Aug 27, 2012 at 9:57 PM, Bill Thayer <[email protected]> wrote: > ...no trainers are being returned. I even tried moving > unassignedtrainers = (~db.trainer.id.belongs(db()._select(db.dogs.trainer > ))) > db.dogs.trainer.requires = IS_IN_DB(db(unassignedtrainers), 'trainer.id', > '%(name)s',zero=T('choose one')) > > > to the controller. No luck. > > The drop down boxes do not appear, > If I click the edit link there are no trainers to select. > > Tried Richards line to get the trainers without dogs as well. > > Am I making this harder than it has to be? > > On Monday, August 27, 2012 2:49:22 PM UTC-5, Bill Thayer wrote: >> >> Thank you Richard, >> >> I'll try it as soon as I finish my current round of debugging. >> >> -Bill >> >> On Monday, August 27, 2012 1:20:49 PM UTC-5, Richard wrote: >>> >>> Hello, >>> >>> If I resume correctly you want to assign a trainer to a dog only if the >>> trainer haven't been assign to any dogs yet? >>> >>> So, what you have to do it to build a set instead of only define an >>> simple IS_IN_DB()... >>> >>> I would do something like this (not tested) : >>> >>> not_assign_yet_trainer_set = db(~db.trainers.id.belongs(**db(db.dogs.id >>> >0).select(db.**dogs.trainer, distinct=True))) >>> >>> Than you only have to use your set instead of db.trainers in the >>> IS_IN_DB() where you normally define the db table to use. >>> >>> Does it help? >>> >>> Richard >>> >>> On Mon, Aug 27, 2012 at 1:12 PM, Bill Thayer <[email protected]> wrote: >>> >>>> Tryin to use the example shown in Validators between classical and >>>> professional >>>> usage<http://web2py.wordpress.com/category/web2py-validators/>to change >>>> the values and widget for an SQLFORM.grid. >>>> >>>> I need to display an "Assign Trainers" page with an SQLFORM.grid (or >>>> something similar) of new dogs that have not been assigned to a trainer but >>>> can only be assigned to new trainers that have not been given dogs. So I >>>> thought simple query the is_active property on both cases, append the >>>> validator make (& process) my form. >>>> >>>> db.define_table('trainer', >>>> Field('name'), >>>> Field('specialty'), >>>> auth.signature, >>>> format='%(name)s') >>>> db.trainer.is_active.default=F**alse >>>> >>>> db.define_table('dogs', >>>> Field('name'), >>>> Field('bites', 'boolean'), >>>> Field('trainer', 'reference trainer', >>>> default=1, >>>> widget=SQLFORM.widgets.options**.widget, >>>> requires=[IS_IN_DB('db.**trainer', >>>> IS_UPPER())]), >>>> auth.signature, >>>> migrate=True) >>>> >>>> db.dogs.is_active.default=Fals**e >>>> >>>> Controller: >>>> def assign_trainers(): >>>> trainers=db(db.trianer._is_**active==False) >>>> new_dogs=db(db.dogs._is_active**==False) >>>> new_dogs.trainer.requires.appe**nd(IS_IN_SET(trainers)) >>>> >>>> grid = SQLFORM.grid(new_dogs) >>>> >>>> return locals() >>>> >>>> Been working on this solution for two days now. Read all the books, >>>> bought the >>>> Cookbook<https://play.google.com/books/reader?id=cwjpG47z_7IC&printsec=frontcover&output=reader&authuser=0&hl=en&pg=GBS.PA1>read >>>> the blogs and now I'm out of time with my prototype presentation due >>>> Thursday. >>>> >>>> ANY help is very much needed at this point. >>>> >>>> Thank you, >>>> Bill >>>> >>>> >>>> >>>> >>>> -- >>>> >>>> >>>> >>>> >>> >>> -- > > > > --

