campo list:string mostrar en lista despegable

已查看 31 次
跳至第一个未读帖子

Jorge Cedermaz

未读,
2015年9月1日 14:29:372015/9/1
收件人 web2py-usuarios
Buenas, de nuevo por aquí en busca de ayuda. Tengo el siguiente modelo:

db.define_table("estados",
    Field("denominacion", "string", length=45, notnull=True),
    Field("descripcion", "string", length=100, default=None),
     Field("permitidos", 'list:string'),
        format='%(denominacion)s')

En el controlador quiero mostrar el campo "permitidos" en una lista despegable. Para eso hice lo siguiente (muestro parte del código):

else:
        registro = db(db.estados.id==request.args(2)).select(db.estados.permitidos)
        form = SQLFORM.factory(Field('Estados',requires=IS_IN_SET(registro.as_list(),zero=T('Elige un Estado'),error_message='Elige un Estado')),db.cirugia_estado.observaciones)

Esto no da error pero veo en la lista despegable una sola opción de esta manera: {'permitidos':['PENDIENTE','SUSPENDIDA',SOLICITADA']}

Como puedo ver eso pero listado para poder elegir entre las opciones: PENDIENTE, SUSPENDIDA o SOLICITADA?

Marco Mansilla

未读,
2015年9月2日 01:48:002015/9/2
收件人 web2py-...@googlegroups.com
El Tue, 1 Sep 2015 11:29:37 -0700 (PDT)
Jorge Cedermaz <cederma...@gmail.com> escribió:
Eso no funciona por que ademas del nombre necesitas un valor para
asociar a la opcion, cuando usas

db.define_table('miTabla',
Field('nombre'),
Field('campoLista',db.otraTabla) # o reference otraTabla)

el campo que hace referencia a la otra tabla toma el valor del id de
esa tabla y el texto se lo asigna el format='%(nombreParaMostrar)s',
entonces ahi tenes el value y text para la lista desplegable, lo cual
no funciona con los campos list, imagino que eso lo podrias trabajar en
la vista generando la lista manualmente y asignando valores, aunque
deberias pensar bien como los vas a relacionar.

Saludos.

Jorge Cedermaz

未读,
2015年9月2日 08:25:142015/9/2
收件人 web2py-usuarios
Gracias Marcos por tu respuesta. Pensare otra manera de implementarlo entonces

Saludos!!!
回复全部
回复作者
转发
0 个新帖子