IS_IN_DB takes a DAL set, so you can limit the records returned. If you want
the record ID returned, use db.setup.id. So, maybe something like this:
Field('setup', requires=IS_IN_DB(db(db.setup.ready==True), db.setup.id,
'%(setupname)s'))
Anthony
On Wednesday, July 13, 2011 9:06:03 PM UTC-4, Gwayne aka Mike Veltman wrote:
> This will probably a facepalm moment but I can not figure it out.
>
> My present used form function
>
> form = SQLFORM.factory(
> Field('setup', requires=IS_IN_DB(db, db.setup.setupname,
> '%(setupname)s')
> ))
>
>
> Model
>
> db.define_table('setup',
>
> Field('setupname', type='string',
> unique=True,
> label=T('Setup name')),
> Field('description', type='string',
> label=T('Description')),
> Field('frame_id', db.frame,
> label=T('Frame ID')),
> Field('course_id', db.course,
> label=T('Course ID')),
> Field('ready', type='boolean',
> default=False,
> label=T('Ready for use')),
> Field('nostorage', type='boolean',
> default=False,
> label=T('No storage needed')),
> Field('noprofiles', type='boolean',
> default=False,
> label=T('No profiles needed')),
> Field('nonim', type='boolean',
> default=False,
> label=T('No nim actions needed')),
> Field('securitylevel', type='integer',
> default=0,
> label=T('Security Level')),
> Field('created_on','datetime',default=request.now,
> label=T('Created On'),writable=False,readable=False),
> Field('modified_on','datetime',default=request.now,
> label=T('Modified On'),writable=False,readable=False,
> update=request.now),
> format='%(setupname)s',
> migrate=settings.migrate)
>
> What I try to get is that the form only shows the setupname of the records
> where setup.read==True and then returns setup.id so I can use that.
>
> A addtional would be that the first selection is the first record and not
> empty.
>
> Thanks in advance.
>
>
> With regards,
> Mike Veltman
>
>
>