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
>

-- 



Reply via email to