Re: [web2py] How to to get SQLFORM.factory to show only a subset of records ?
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
Re: [web2py] How to to get SQLFORM.factory to show only a subset of records ?
For reference, see http://web2py.com/book/default/chapter/07#Database-Validators. On Wednesday, July 13, 2011 9:21:54 PM UTC-4, Anthony wrote: 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
Re: [web2py] How to to get SQLFORM.factory to show only a subset of records ?
Oh, and to get rid of the empty choice at the top of the list, add zero=None: IS_IN_DB(..., zero=None) On Wednesday, July 13, 2011 9:22:50 PM UTC-4, Anthony wrote: For reference, see http://web2py.com/book/default/chapter/07#Database-Validators. On Wednesday, July 13, 2011 9:21:54 PM UTC-4, Anthony wrote: 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
Re: [web2py] How to to get SQLFORM.factory to show only a subset of records ?
Thanks about 1 zillion times :) Oh, and to get rid of the empty choice at the top of the list, add zero=None: IS_IN_DB(..., zero=None) On Wednesday, July 13, 2011 9:22:50 PM UTC-4, Anthony wrote: For reference, see http://web2py.com/book/default/chapter/07#Database-Validators. On Wednesday, July 13, 2011 9:21:54 PM UTC-4, Anthony wrote: 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 With regards, Mike Veltman