I changed to "is not 'id'" and that worked.  AH didn't pay attention
to the order but you were right, order is right now and it looks
good.  This is what I ended up using:

{{=form.custom.begin}}
<ul>
    {{ for fieldname in form.table.fields: }}
        {{if fieldname is not 'id':}}
            <li><label>{{=form.custom.label[fieldname]}}</label>
            {{=form.custom.widget[fieldname]}}</li>
        {{pass}}
    {{pass}}
    <li>{{=form.custom.submit}}</li>
</ul>
{{=form.custom.end}}

Thanks again for the help!

-Keith

On Sep 22, 10:22 am, mdipierro <[email protected]> wrote:
> that messes up order. Try this:
>
> {{=form.custom.begin}}
> <ul>
>     {{ for fieldname in form.table.fields: }}{{if fieldname=='id':}}
>       <li><label>{{=form.custom.label[fieldname]}}</label>
> {{=form.custom.widget[fieldname]}}</li>
>     {{pass}}{{pass}}
>     <li>{{=form.custom.submit}}</li>
> </ul>
> {{=form.custom.end}}
>
> On Sep 22, 10:19 am, Keith <[email protected]> wrote:
>
>
>
> > Oh nice!  I didn't know you could use SQLFORM if you weren't using a
> > database, very nice.  Sure looks allot nicer by default.
>
> > So based on your example I'm doing this...
>
> > def roomcreate():
> >   form = SQLFORM.factory(
> >            Field('room_name', requires=IS_NOT_EMPTY()),
> >            Field('attendee_pw',requires=IS_NOT_EMPTY()),
> >            Field('moderator_pw',requires=IS_NOT_EMPTY()),
> >          )
>
> > In the view, {{=form}} gives a pretty <table> version of the form.
> > What is the proper way to loop through and get the name and
> > formfield?  I couldn't figure out how to apply your suggestion of
> > form['_name'].  I know I'm doing something wrong with the syntax but
> > this is what I have:
>
> > {{ for fieldname in form: }}
> >    <li><label>{{=fieldname['_name']}}</label>{{=fieldname}}</li>
> > {{pass}}
>
> > As a end result I want something like this
>
> > <li><label>Room Name</label><input class="string" name="room_name"/></
> > li>
> > <li><label>Attendee Pw</label><input class="string" 
> > name="attendee_pw"/></li>
>
> > <li><label>Moderator Pw</label><input class="string"
> > name="moderator_pw"/></li>
>
> > I saw in the documentation some form.custom stuff (http://web2py.com/
> > book/default/chapter/07#Custom-forms) which is nice because it allows
> > me to call name (form.custom.label) and form element
> > (form.custom.widget).  I was able to figure out a way to loop through
> > it but I seem to be getting some things that aren't part of the form.
> > Here is what I'm doing now:
>
> > {{=form.custom.begin}}
> > <ul>
> >     {{ for fieldname in form.custom.label: }}
> >       <li><label>{{=form.custom.label[fieldname]}}</label>
> > {{=form.custom.widget[fieldname]}}</li>
> >     {{pass}}
> >     <li>{{=form.custom.submit}}</li>
> > </ul>
> > {{=form.custom.end}}
>
> > The above works and gives me a nice form in the format I was expecting
> > but I get a extra "Id" item and I have no idea where that is coming
> > from.  So I'm wondering if I'm looping through this properly or if
> > there is a different way I should be doing this.  Here is the
> > resulting HTML from the above:
>
> > <form  action="" enctype="multipart/form-data" method="post">
> > <ul>
> >       <li><label>Moderator Pw</label> <input class="string"
> > id="no_table_moderator_pw" name="moderator_pw" type="text" value="" /></li>
>
> >       <li><label>Room Name</label> <input class="string"
> > id="no_table_room_name" name="room_name" type="text" value="" /></li>
> >       <li><label>Id</label> </li>
> >       <li><label>Attendee Pw</label> <input class="string"
> > id="no_table_attendee_pw" name="attendee_pw" type="text" value="" /></
> > li>
> >     <li><input type="submit" value="Submit" /></li>
> > </ul>
> > <div class="hidden"><input name="_formkey" type="hidden"
> > value="8aa047d2-0f5d-43cc-b146-74720ea09f78" /><input name="_formname"
> > type="hidden" value="no_table_create" /></div></form>
>
> > I'm not sure if the first or second example is the better way to go
> > but it's nice working through the features of web2py.  Thanks again
> > for the help,
>
> > -Keith
>
> > On Sep 21, 5:29 pm, mdipierro <[email protected]> wrote:
>
> > > You are using low level functionality
>
> > > for field in form loops over the tags contained in the <form>..</form>
> > > which may or may not have a name. Anyway you are looking for
> > > form['_name'].
>
> > > I would recommend doing this instead:
>
> > > This is my controller:
>
> > > def roomcreate():
> > >     form = SQLFORM.factory(
> > >                    Field('room_name', requires=IS_NOT_EMPTY()),
> > >                    Field('attendee_pw',requires=IS_NOT_EMPTY()),
> > >                    Field('moderator_pw',requires=IS_NOT_EMPTY()),
>
> > > Field('welcome_msg',requires=IS_NOT_EMPTY()),formstyle='ul')
>
> > > {{=form}}
>
> > > On Sep 21, 4:55 pm, Keith <[email protected]> wrote:
>
> > > > I'm trying to figure out how to get field name when using FORM in the
> > > > controller.  I can draw the form input fields or put a label on it,
> > > > but can't seem to figure out how to just call the form field name as a
> > > > variable in the view.  Ideally I'd like to be able to do something
> > > > like this in the view:
>
> > > > {{ for field in form: }}
> > > >    <li> <label>{{=field.name}}</label> {{=field}} </li>
> > > > {{pass}}
>
> > > > This is my controller:
>
> > > > def roomcreate():
> > > >     form = FORM(
> > > >                    INPUT(_name='room_name', requires=IS_NOT_EMPTY()),
> > > >                    INPUT(_name='attendee_pw',
> > > > requires=IS_NOT_EMPTY()),
> > > >                    INPUT(_name='moderator_pw',
> > > > requires=IS_NOT_EMPTY()),
> > > >                    INPUT(_name='welcome_msg',
> > > > requires=IS_NOT_EMPTY()),
> > > >                    INPUT(_type='submit')
>
> > > > I've tried wrapping the the INPUT inside of a "LABEL" tag but that
> > > > doesn't give me the end result HTML I need.  I really need to be able
> > > > to call the field itself and field name as separate variables in the
> > > > view.  I know worst case I can manually create the HTML for the whole
> > > > form but I'm trying to learn and figure out if this is possible first
> > > > before I do that.
>
> > > > Thanks for any help or pointers.
>
> > > > -Keith

Reply via email to