How about: for i in range(0,10): inputs.append(db.table1.field1.clone(name='%s_%s' % (db.table1.field1. name, i)))
The .clone() method copies the field, but you can pass in arguments to replace some of the existing attributes (such as the name). I don't think this is documented, though. Anthony On Thursday, March 14, 2013 8:42:21 AM UTC-4, Richard wrote: > > Hello Anthony, > > I know that, I just forget to take it in consideration in my example I > guess... > > What I want to do is to create a batch insert form for a table a kind of > inline edition but for insert data into database... So I would have many > rows in a html table that will contains the fields a given table and only > one submit button. > > I can build my form like this : > > inputs = [] > for i in range(0,10): > inputs.append(Field('field1'+'_%s' %str(i), 'type...', ...)) > inputs.append(Field('field2'+'_%s' %str(i), 'type...', ...)) > > form = SQLFORM.factory(*inputs) > > That way I get unique distinct inputs fields. > > Then with custom form I can esealy build html table in view... > > But what I would like to avoid is to have 2 instances for field definition > : one in model and one in the batch insert function because it seems to me > that I can't get the field definition propertieds from model... > > I would like to know if I could get field properties from model something > like that : > > inputs = [] > for i in range(0,10): > inputs.append(Field(db.table1.field1.name+'_%s' %str(i), > db.table1.field1.type, ...) > ... > > Thanks > > Richard > > > On Wed, Mar 13, 2013 at 6:28 PM, Anthony <abas...@gmail.com > <javascript:>>wrote: > >> SQLFORM.factory creates a dummy DAL Table object with the fields >> submitted, so you cannot use duplicate field names, as they are illegal in >> DAL tables. Note, technically your form can have input elements with the >> same name, but once the values are submitted to the server, the values will >> be joined together in a single list. For example, if you have three fields >> with the name "field1", request.vars.post_vars will be a list like [value1, >> value2, value3]. >> >> What are you really trying to do? >> >> Anthony >> >> >> On Wednesday, March 13, 2013 3:31:19 PM UTC-4, Richard wrote: >> >>> Hello, >>> >>> I would like to build a bunch insert form and I wouldn't have to >>> duplicate fields definition for SQLFORM.factory >>> >>> I try naively >>> >>> inputs = [] >>> for i in range(0,10): >>> inputs.append(db.table1.field**1) >>> inputs.append(db.table1.field**2) >>> >>> form = SQLFORM.factory(*inputs) >>> >>> But even if I get 10 inputs of each in "inputs" they all refer to the >>> same instance so when I render the form with SQLFORM.factory, I only get my >>> 2 fields, but I would have 10 of each... >>> >>> Is there a way to avoid doing this : >>> >>> inputs = [] >>> for i in range(0,10): >>> inputs.append(Field('field1', 'type...', ...)) >>> inputs.append(Field('field2', 'type...', ...)) >>> >>> form = SQLFORM.factory(*inputs) >>> >>> Because doing the last example would make my code much more less DRY. >>> >>> Thanks >>> >>> Richard >>> >> -- >> >> --- >> 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 web2py+un...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- --- 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.