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.


Reply via email to