I cannot think of any.
On Tuesday, 22 January 2013 06:34:03 UTC-6, Annet wrote:
>
> I defined the following tables:
>
> db.define_table('nav',
> Field('navbarID','reference navbar',default='',requires=IS_IN_DB(db,'
> navbar.id','%(name)s',zero=T('select a value')),notnull=True),
>
> Field('name',length=32,default='',requires=[IS_LENGTH(32,error_message=T('length
>
> exceeds 32 characters')),IS_NOT_EMPTY()],notnull=True),
>
> Field('backendcontroller',length=32,default='',requires=IS_LENGTH(32,error_message=T('length
>
> exceeds 32 characters'))),
>
> Field('frontendcontroller',length=32,default='',requires=IS_LENGTH(32,error_message=T('length
>
> exceeds 32 characters'))),
>
> Field('function',length=32,default='',requires=[IS_LENGTH(32,error_message=T('length
>
> exceeds 32 characters')),IS_NOT_EMPTY()],notnull=True),
> format='%(name)s',
> migrate=False)
>
> db.define_table('nodeNav',
> Field('nodeID','reference node',**isnode),
> Field('navID','reference nav',default='',notnull=True'),
> Field('backend',type='boolean',default=False),
> Field('frontend',type='boolean',default=False),
> on_define=set_requirement,
> migrate=False)
>
> Given the following records in nodeNav:
>
> 4 6 True True
> 4 7 True False
> 4 8 True False
> 4 9 True True
>
> I'd like to create a form in which every record is a field, the name
> should be the navID, the label should be the name in table nav, the field
> should be of type boolean and its value should be the value of frontend.
>
> I thought of something like:
>
> query=db((db.nodeNav.nodeID==4)&(db.nodeNav.navID==db.nav.id
> )&(db.nav.navbarID==3))
> records=query.select(db.nodeNav.ALL,db.nav.ALL)
> fields_list=[]
> for r in records:
> fields_list.append(Field(name=str(r.nav.id
> ),type='boolean',default=r.nodeNav.frontend,label=r.nav.name))
> form=SQLFORM.factory(*fields_list)
> if form.process().accepted:
> records=query.select(db.nodeNav.ALL)
> for r in records:
> field=r.navID
> r.update_record(frontend=form.vars.field)
> return dict(form=form)
>
> Is this the way to go or is there a better way to implement this?
>
> Kind regards,
>
> Annet
>
--