Hello,
I have a simple app. It's a cumtom SQLFORM form. When fill it in
index, all seems ok, but in the redirect ('buscar_coche_ocasion'),
where is the same form, raise an error:
ValueError: invalid literal for int() with base 10: '|75|75|'
That's is: the var 'potencia' is sending twice, and stored in a list.
If 'potencia' is passed as args, all is ok.
controler:
def index():
form2 = SQLFORM(db.busqueda_coche_ocasion)
if form2.process(session=None,
formname='fcoche_ocasion').accepted:
redirect(URL('default','buscar_coche_ocasion',
args=([form2.vars.marca,form2.vars.modelo]),
vars={'potencia':form2.vars.potencia}))
elif form2.errors:
response.flash = T('error')
else:
pass
##Another form.....
return dict()
view index.html:
<form action="" enctype="multipart/form-data" method="post"
name='fcoche_ocasion'>
<fieldset>
<legend>{{=T('Coche de ocasión')}}</legend>
<table>
<tr id="busqueda_coche_ocasion_marca__row">
<td class="w2p_fl"><label for="busqueda_coche_ocasion_marca"
id="busqueda_coche_ocasion_marca__label">{{=T('Marca: ')}} </label>
</td>
<td
class="w2p_fw">{{=SELECT(MARCA_PRUEBA,_type='text',_class='string',_name='marca',
_id='busqueda_coche_ocasion_marca')}}
</td>
<td class="w2p_fc"></td>
</tr>
<tr id="busqueda_coche_ocasion_modelo__row">
<td class="w2p_fl"><label for="busqueda_coche_ocasion_modelo"
id="busqueda_coche_ocasion_modelo__label">{{=T('Modelo: ')}} </label></
td>
<td
class="w2p_fw">{{=SELECT(MODELOS_PRUEBA,_type='text',_class='string',_name='modelo',_id='busqueda_coche_ocasion_modelo')}}
</td>
<td class="w2p_fc"></td>
</tr>
<tr id="busqueda_coche_ocasion_potencia__row">
<td class="w2p_fl"><label for="busqueda_coche_ocasion_potencia"
id="busqueda_coche_ocasion_potencia__label">{{=T('Potencia mínima
(CV): ')}} </label></td>
<td class="w2p_fw">{{=SELECT(POTENCIA_B,
value='75',_name='potencia',_class="string",_id="busqueda_coche_ocasion_potencia")}}
</td>
<td class="w2p_fc"></td>
</tr>
<tr id="submit_record__row">
<td class="w2p_fl"></td>
<td class="w2p_fw">
<input type="submit" value="{{=T('Buscar coche de
ocasión')}}" />
</td>
<td class="w2p_fc"></td>
</tr>
</table>
</fieldset>
<td class="hidden"><input name="_formname" type="hidden"
value="fcoche_ocasion" />
</td>
</form>
db.py
POTENCIA=(10,50,75,100,120)
POTENCIA_B=('Todos',)+POTENCIA
MARCA_PRUEBA=('Volvo','BMW')
MODELOS_PRUEBA=('121','122','123','144')
db.define_table('busqueda_coche_ocasion',
Field('usuario', readable=False, writable=False,
default=(auth.user_id or 'anonymous')),
Field('marca',),
Field('modelo',),
Field('potencia',),
)
db.busqueda_coche_ocasion.potencia.requires = IS_IN_SET(POTENCIA_B)
db.define_table('coche_ocasion',
Field('vendedor_id', default = auth.user_id, readable=False,
writable=False),
Field('marca',),
Field('modelo',),
Field('potencia', 'integer',),
)
db.coche_ocasion.marca.requires = IS_IN_SET(MARCA_PRUEBA)
db.coche_ocasion.modelo.requires = IS_IN_SET(MODELOS_PRUEBA)
view: 'buscar_coche_ocasion.html'
{{if listado_coches_ocasion:}}
{{=H3(T('Estos son los coches encontrados: '))}}
{{for item in listado_coches_ocasion:}}
{{=item.marca+' '+item.modelo+' '+str(item.potencia)}}
<br>
{{pass}}
{{else:}}
{{=H3(T('No hay coches de ocasión de las características
especificadas'))}}
{{pass}}
<form action="" enctype="multipart/form-data" method="post"
name='fcoche_ocasion'>
<table>
<tr id="busqueda_coche_ocasion_marca__row">
<td class="w2p_fl"><label for="busqueda_coche_ocasion_marca"
id="busqueda_coche_ocasion_marca__label">{{=T('Marca: ')}} </label>
</td>
<td
class="w2p_fw">{{=SELECT(MARCA_PRUEBA,_type='text',_class='string',_name='marca',
_id='busqueda_coche_ocasion_marca')}}
</td>
<td class="w2p_fc"></td>
</tr>
<tr id="busqueda_coche_ocasion_modelo__row">
<td class="w2p_fl"><label for="busqueda_coche_ocasion_modelo"
id="busqueda_coche_ocasion_modelo__label">{{=T('Modelo: ')}} </label></
td>
<td
class="w2p_fw">{{=SELECT(MODELOS_PRUEBA,_type='text',_class='string',_name='modelo',_id='busqueda_coche_ocasion_modelo')}}
</td>
<td class="w2p_fc"></td>
</tr>
<tr id="busqueda_coche_ocasion_potencia__row">
<td class="w2p_fl"><label for="busqueda_coche_ocasion_potencia"
id="busqueda_coche_ocasion_potencia__label">{{=T('Potencia mínima
(CV): ')}} </label></td>
<td class="w2p_fw">{{=SELECT(POTENCIA_B,
value='75',_name='potencia',_class="string",_id="busqueda_coche_ocasion_potencia")}}
</td>
<td class="w2p_fc"></td>
</tr>
<tr id="submit_record__row">
<td class="w2p_fl"></td>
<td class="w2p_fw">
<input type="submit" value="{{=T('Buscar coche de
ocasión')}}" />
</td>
<td class="w2p_fc"></td>
</tr>
</table>
<td class="hidden"><input name="_formname" type="hidden"
value="fcoche_ocasion" />
</td>
</form>