I got it resolved... ashamed to say it but I missed the = in
the {{form.custom.end}} tag :(
On Friday, December 20, 2013 3:16:34 PM UTC+1, Ivo wrote:
>
> I have chosen to go the custom form way.
> The only issue I have is that upon hitting submit, the button submits all
> the forms on the page instead of just the one owning the button. I think
> this also screws up my validation and it prevents records from being
> inserted to the db.
>
> controller:
> def show_form():
>
> users_1 =
> db(db.people.id.belongs(session.people.keys())).select(db.people.user_id)
> users_2=[]
> for user in users_1:
> if user not in users_2:
> users_2.append(user)
> else:
> pass
>
> forms=[]
> for user in users_2:
> usr= db(db.auth_user.id
> ==user.user_id).select(db.auth_user.username,db.auth_user.id)[0]
> usr1=usr.username
> usr2=usr.id
> key=str(usr2)
> fields = [
> Field('key',default=key,writable=False),
> Field('username',default=usr1,writable=False),
> Field('address',default='Fill in your
> address',type='text')
> ]
>
> form=SQLFORM.factory(*fields,
> table_name=key,hidden=dict(ss_id=key),
> buttons=[
> BUTTON("Save Changes",
> _class="btn btn-primary")])
> if form.process(formname=key, hideerror=True).accepted:
> db.parking.insert(name=usr1, address=form.vars.address)
> forms.append(form)
>
> return dict(forms=forms)
>
>
>
> view:
> {{for form in forms:}}
> {{=form.custom.begin}}
> User: {{=form.custom.widget.username}} <br>
> Address: {{=form.custom.widget.address}} <br>
> {{form.custom.end}}<br><br>
> {{pass}}
>
>
> On Wednesday, December 18, 2013 9:45:14 PM UTC+1, Niphlod wrote:
>>
>> form.process adds little bits to the form to be able to actually process
>> the posted data.
>>
>> in pseudo-code you need to
>>
>> list_of_forms = []
>> for something in list_of_values:
>> key = something_unique
>> form = SQLFORM(....)
>> if form.process(formname=something_unique).accepted:
>> .....code dealing with the posted values, such as form.vars,
>> etc
>> elif form.errors:
>> .....code dealing with form errors
>>
>> list_of_forms.append(form)
>> ......
>> return dict(list_of_forms=list_of_forms, ....)
>>
>> In the view, you can then:
>>
>> {{for single_form in list_of_forms:}}
>> <div class="row">
>> {{=single_form}} #or {{single_form.custom.etc etc etc}}
>> </div>
>> <hr />
>> {{pass}}
>>
>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
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.