Formularios en Turbogears

Jesús Serrano jesus.signin en gmail.com
Mar Feb 14 12:01:45 CET 2006


Hola a todos.
Llevo un tiempo aprendiendo turbogears y quiero hacer un formulario para
editar/insertar registros en una base de datos.
Algo parecido al del ejemplo pero con algunas diferencias. Me explico:

En el ejemplo que hay en la página de turbogears se le pasa cada variable
del formulario una a una, algo como esto:

<input type="text" name="nombre" value="${nombre}">
<input type="text" name="apellido1" value="${apellido1}">
<input type="text" name="apellido2" value="${apellido2}">

En el modelo tengo hay que cojer el objeto que devuelve SQLObject y uno a
uno extraer las variables y lanzarselas a KID:

return (nombre=persona.nombre, apellido1=persona.apellido1, apellido2=
persona.apellido1)

Cuando se va a usar para editar un registro esos valores se rellenan y
cuando es para uno nuevo esos valores van vacios pero aprovechan la misma
plantilla para ambas acciones.

Ahora... yo tengo un formulario con un monton de campos y lo q quiero es
poder lanzarle directamente el objeto que me devuelve SQLObject, algo asi

return dict(p=persona)

y en la plantilla...

<input type="text" name="nombre" value="${p.nombre}">
<input type="text" name="apellido1" value="${p.apellido1}">
<input type="text" name="apellido2" value="${p.apellido2}">


Bien, cuando recupero datos de la base de datos, creo el objeto "persona" y
se lo lanzo a la plantilla, me lo pinta perfectamente (incluso a la hora de
grabarlo puedo generar el objeto directamente con los datos sin necesidad de
ir campo por campo), ¡pero! cuando quiero crear un registro nuevo ese objeto
no existe y me da un error (claro)

La pregunta es: si tengo un formulario con muchos campos... ¿es necesario
tratar campo por campo o hay alguna manera de usar directamente los objetos
que uso para SQLObject?

Esto si lo hago en Java con Struts+Hibernate que no tengo q ir uno por uno
con los campos sino que directamente hago todo con los objetos de hibernate
(con el copy del beanutils).

un saludo y gracias
jesus




Más información sobre la lista de distribución Python-es