You can set the readable and writable attributes of the fields, or 
.factory() can take a list of specific fields rather than entire tables.

Anthony

On Monday, June 24, 2013 11:15:28 AM UTC-4, Tom Russell wrote:
>
> If I have a form factory with 3 tables, how would I define the fields I 
> wanted shown for each? 
>
> This is the code for my controller. I have tried to set it in several 
> spots but all of them throw an error.
>
> def register_patient():
>     mark_not_empty(db.patient)
>     mark_not_empty(db.emergencycontacts)
>     mark_not_empty(db.dependents)
>     form=SQLFORM.factory(db.patient, db.emergencycontacts, db.dependents, 
> formstyle = 'table3cols')
>     fs0=form[0][:28]     # the first two name rows
>     fs1=form[0][28:40]   # the wine data rows (all but the last)
>     fs2=form[0][40:45]     # submit row (last) 
>     fs3=form[0][-1]     # submit row (last) 
>      
>     form.vars.medical_record_number = 'KND' + str(date.today().year) + 
> '0000' + str(random.randrange(1, 9999999+1))
>     
>     form[0]=TABLE(
>     FIELDSET(TAG.legend("Patient Info"),TABLE(fs0),_id="register0"),
>     FIELDSET(TAG.legend("Emergency Contact 
> Info"),TABLE(fs1),_id="register1"),
>     FIELDSET(TAG.legend("Dependents"),TABLE(fs2),_id="register2"),
>     TABLE(fs3))
>     if form.process().accepted:
>         id = db.patient.insert(**db.patient._filter_fields(form.vars))
>         form.vars.patient=id
>         id = 
> db.emergencycontacts.insert(**db.emergencycontacts._filter_fields(form.vars))
>         response.flash='Thanks for filling the form'
>         id = 
> db.dependents.insert(**db.dependents._filter_fields(form.vars))
>         form.vars.dependents=id
>         # and get a list of all persons
>         redirect(URL('manage_patients'))
>         
>     style = STYLE(""".not_empty {color:#d00;}""")
>
>     return dict(form=DIV(style,form))
>    
>
> Thanks.
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to