I must have had a typo because this now works great.
(code for anyone else that has this same qustion)

----------Working Code------------
for item in list:
    fields.append(Field(item,requires=IS_INT_IN_RANGE
(0,100,error_message=('Must be an Int 0 to 100'))))

for item in list2:
        fields.append(Field(item))

form=SQLFORM.factory(*[fields[num] for num in range(len(fields))])
----------Working Code------------

Validates and I can break my lists up by the requires.  Exactly what I
needed.


On Oct 29, 3:04 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
> or in one line
>
> form=SQLFORM.factory(*[Field(item) for item in list])
>
> On Oct 29, 2:41 pm, Chris S <sanders.ch...@gmail.com> wrote:
>
> > That's great, I'm sure I'll find all sorts of places that's useful now
> > that I know about it.
> > Now that I can dynamically build my Fields for my list, I've tried to
> > go back and put a requirement on them for validation.  You can't use
> > keywords in a list so I'm a little stumped.
>
> > Is there a suggestion for editing this code to insert 'requires'
> > statements?  Or possibly can I just set one global requires?  In my
> > case all values are INTS in the same range.
> > ----
> > for item in list:
> >      fields.append(Field(item))
>
> > form=SQLFORM.factory(*[fields[num] for num in range(len(fields))])
> > ----
>
> > If the 'requires' statement didn't have to go IN the field statement I
> > was thinking the ** notation with a keyword of 'requires' and a value
> > of 'IS_INT_IN_RANGE(0,100)' might help, but it's got to go IN the Field
> > (item) statement not just appended to the list after it.
>
> > Any suggestions?
>
> > On Oct 29, 10:43 am, Jonathan Lundell <jlund...@pobox.com> wrote:
>
> > > On Oct 29, 2009, at 8:36 AM, Chris S wrote:
>
> > > > lol, well I've been all around that.  Thank you so much, works just
> > > > fine now.
>
> > > > Is there a quick 2-min "why that works" or somewhere you could point
> > > > me to as to what that * means/does?  Apparently I'm missing out on
> > > > something important.
>
> > > It's a Python thing. Check out 5.3.4 here:
>
> > >http://docs.python.org/reference/expressions.html#calls
>
> > > > On Oct 29, 10:33 am, mdipierro <mdipie...@cs.depaul.edu> wrote:
> > > >> form=SQLFORM.factory(*[fields[num] for num in range(len(fields))])
>
> > > >> On Oct 29, 10:25 am, Chris S <sanders.ch...@gmail.com> wrote:
>
> > > >>> I've been trying to get a form built where the number of Fields are
> > > >>> dynamic.  I was successful with the plan form by using:
> > > >>> ------------Form Implementation------------------------
> > > >>> fields=[]
> > > >>> for item in list:
> > > >>>         fields.append(item)
> > > >>>         fields.append(INPUT(_name=item,requires=IS_INT_IN_RANGE
> > > >>> (0,100,error_message=('Must be an Int 0 to 100'))))
> > > >>> fields.append(INPUT(_type='submit'))
>
> > > >>> form=FORM([fields[num] for num in range(len(fields))])
> > > >>> ------------Form Implementation------------------------
>
> > > >>> I can append items to my form but the output in HTML is nasty.
> > > >>> Everything is just crammed together.  I read about form.custom and  
> > > >>> was
> > > >>> going to use that approach but apparently I have to use the
> > > >>> SQLFORM.factory() to use that.  Attempting the same thing in
> > > >>> SQLFORM.factory() looks like
>
> > > >>> ------------SQLFORM.factory() Implementation------------------------
> > > >>> fields.append(Field('item1'))
> > > >>> fields.append(Field('item2'))
>
> > > >>> form=SQLFORM.factory(fields[0])
> > > >>> #This works, but obviously isn't dynamic I only get the first entry.
>
> > > >>> form=SQLFORM.factory(fields[num] for num in range(len(fields)))
> > > >>> #This errors with "define_table argument is not a Field: <generator
> > > >>> object at 0x110BD7B0>"
> > > >>> ------------SQLFORM.factory() Implementation------------------------
>
> > > >>> Can anyone help me out here?  I want to be able to arrange the  
> > > >>> fields
> > > >>> in HTML like I want (which I can't seem to do with just the simple
> > > >>> form), but I also want to be able to build the fields dynamically
> > > >>> which I can't seem to get working with SQLFORM.factory().  I'm sure
> > > >>> I'm missing something easy, this can't be as hard as I'm making it.
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to