cambiar el contenido de una variable en SQLAlchemy
Jose Caballero
jcaballero.hep en gmail.com
Lun Ago 4 20:44:13 CEST 2008
Muchas gracias de nuevo.
Y si no se entendió bien la pregunta es porque no estaba bien formulada. Una
pregunta bien formulada siempre se entiende. Es decir, fue culpa mía y pido
disculpas por ello.
Lo que me propones tiene buena pinta. Y es ese tipo de cosas lo que estoy
probando.
De momento lo he arreglado (como solución temporal) haciendo algo como esto:
for entry in lista:
entry.new_MyField1 = funcion_cambia_formato(entry.MyField1)
y en el template HTML he cambiado MyField1 por new_MyField1. Funciona, pero
es horrible.
Muchas gracias por tu ayuda, paciencia y tiempo.
Saludos,
Jose
El 4 de agosto de 2008 14:35, Alberto Valverde<alberto en toscat.net>escribió:
> Jose Caballero wrote:
> >
> > Si entiendo correctamente lo que leo en ese link, lo que hace insert() es
> > cambiar el contenido de la base de datos.
> > ¿Es eso, o no lo he entendido bien?
> >
> Sí lo modifica, perdona, he interpretado mal tu pregunta, pensaba que
> era lo que querías.
> > Porque no estoy interesado en eso. Sencillamente, quiero cambiar el
> output
> > para un campo. Por ejemplo, imaginemos que una de las filas en la tabla
> de
> > mi DB es una fecha, pero yo quiero visualizar en mi web esa fecha con un
> > formato diferente. O quiero cambiar algunos símbolos raros por espacios
> en
> > blanco, y cosas por el estilo.
> > No quiero cambiar lo que hay en la base de datos. Sólo el contenido que
> me
> > devuelve antes de pasarlo al HTML.
> >
> Parece que SA no te deja hacer eso con las filas pues... puedes probar a
> envolverlas:
>
> class Envoltorio(object):
> def __init__(self, fila):
> self.__dict__.update(**dict(fila))
>
> filas = map(Envoltorio, filas)
> for fila filas:
> # Ahora sí que puedes modificar los atributos...
>
> Aunque yo dejaría que el ORM de SA haga el trabajo sucio que para eso está:
>
> en algún sitio, a nivel de módulo:
>
> from sqlalchemy.orm import create_session, mapper
> class UnaClase(object):
> @property
> def fecha_formateada(self):
> return self.fecha.strftime(...)
> # etc...
> mapper(UnaClase, tabla)
>
> luego dentro del view:
>
> session = create_session()
> objetos = session.query(UnaClase).all()
> # la lista "objetos" ya la puedes modificar si quieres y luego mandarla
> a la plantilla
>
> Recuerda *no* llamar nunca a session.flush() o session.commit() sino SA
> escribirá los cambios en la BDD, a menos que sea lo que quieras, claro
>
> Por cierto, he encontrado el tutorial ORM de la 0.3 donde te explica
> mejor todo ésto:
> http://www.sqlalchemy.org/docs/03/tutorial.html#tutorial_orm
>
> Alberto
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es