[pyar] Django.. agregar al QuerySet

Ramiro Morales cramm0 en gmail.com
Lun Ago 1 18:32:24 ART 2011


2011/8/1 Marcelo Martinovic <marcelo.martinovic en gmail.com>:
> Buenas lista.
>
> Estoy tratando de hacer lo siguiente...
> Tengo una consulta que me trae
>
>        id,
>        nombre,
>        apellido,
>        estado
>
> Ahora bien mi dilema es quiero una vez ejecutado el
>
>        algo = MiTabla.objects.all()
>
> poder recorrer el queryset "algo" y agregar a cada fila una nueva columna
> llamada "imagen" y que según el valor de estado pueda meter un texto o un
> nombre de imagen para que el template luego represente esto.

Si lo querés solamente para poder enviarle información a la plantilla
(o escrito de otra forma, una evz que llegue el momento de
pasar información la para el rendering de la plantilla) podés convertir
el queryset a una lista de diccionarios con el método [1]values() y
después manejarte con esos diccionarios:

class Modelo(models.Model):
    nombre = models.CharField(...)

qs = Modelo.objects.... # genera un queryset

for dobj in qs.values():
    dobj['mi_imagen'] = '/path/a/imagenes/imagen%05d. png' % dobj['d; ]

ctx['objetos'] = dobj
return render_to_respobnse('template.html', ctx)

El problema de eso puede llegar a ser si el queryset es realmente grande ya
que el uso de memoria de los distintas estructuras involucradas (el buffer del
cliente de DB si lo hay, el queryset de Django y la lista de diccionarios
resultante) es algo a lo que posiblemente tengas prestarle atención.
Ahi puede llegar a ser de ayuda el método [2].iterator()

-- 
Ramiro Morales

1. https://docs.djangoproject.com/en/dev/ref/models/querysets/#values
2. https://docs.djangoproject.com/en/dev/ref/models/querysets/#iterator



More information about the pyar mailing list