SQLFORM.grid con una consulta y no con la tabla completa. Problema con el funcionamiento de los botones

59 views
Skip to first unread message

nicolás rosbaco

unread,
Jan 27, 2017, 9:19:04 AM1/27/17
to web2py-...@googlegroups.com
Hola compañeros/as: hace unos días que estoy con este asistente para manipular tablas.

Mi problema ahora es el siguiente, quiero aprovechar la función de editar/borrar registros que provee el grid. Así que desde la vista de la noticia dejo un botón de edición/borrado (solo para el editor del sitio)



y la acción prevista para ese botón es la siguiente (va en el controlador noticias):

@auth.requires_membership('editor')
def editar():
    registro = db(db.post.id==request.args(0)).select() or redirect(URL('error'))
    form=SQLFORM.grid(db.post.id==request.args(0),user_signature=False)
    return dict(form=form,id=request.args(0))

y en la vista simplemente {{=form}}

Hasta acá bien, me muestra en grid con ese único registro.... el problema es que los botones edición/eliminar del grid dan error....

))
ValueError: invalid literal for long() with base 10: 'edit'



No se que hacer.... se agradece ayudas en este tema, se agradece muuucho.

Gracias desde ya!!!!



nicolás rosbaco

unread,
Jan 27, 2017, 10:29:11 AM1/27/17
to web2py-...@googlegroups.com
auto respuesta, que sirva por si otro/a más va con la misma duda.... o me leeré yo mismo a futuro.
La clave es leer por segunda vez el manual, tal vez...

http://www.web2py.com/books/default/chapter/41/07/formularios-y-validadores?search=sqlform.grid#SQLFORM-grid-y-SQLFORM-smartgrid

Parece que la clave es decirle a la función que "utilice" los parámetros del args "posteriores al primero.

Me quedó así (de paso con el botón ver personalizado)

def administrar():


    registro = db(db.post.id==request.args(0)).select() or redirect(URL('error'))

    form=SQLFORM.grid(db.post.id==request.args(0),args=request.args[:1],user_signature=False,\
                      links = \
                      [lambda row: A(SPAN('',_class='icon magnifier icon-zoom-in glyphicon glyphicon-zoom-in'),' ver',_href=URL('noticias','leer',args=[row.id]), _class='button btn btn-default', _target='blank')])

    return locals()





Reply all
Reply to author
Forward
0 new messages