Discussion:
[pyar] [Django] Inventar queryset para el admin
Daniel
2015-04-17 19:40:04 UTC
Permalink
Tenia la idea de "engañar" al admin y hacer un modelo ficticio
que en realidad es para ver información colectada de distintos modelos,
agruparlos y demas

para lo que necesito inventar el queryset y pasárselo al admin
sobrescribiendo
el get_queryset

¿es muy descabellado?
¿cómo lo puedo hacer?
Federico Di Nella
2015-04-17 19:50:10 UTC
Permalink
Dentro del Admin que escribiste podes sobrescribir el método queryset:

class TuModeloAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = xxx #aca arma el queryset que quieras

return qs

Eso debería funcionarte.
Post by Daniel
Tenia la idea de "engañar" al admin y hacer un modelo ficticio
que en realidad es para ver información colectada de distintos modelos,
agruparlos y demas
para lo que necesito inventar el queryset y pasárselo al admin
sobrescribiendo
el get_queryset
¿es muy descabellado?
¿cómo lo puedo hacer?
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
Daniel
2015-04-17 20:12:42 UTC
Permalink
mmm... no me fuciona
¿no deberia ser el override de get_queryset?

el problema es que no se como generar un nuevo queryset

class MiModeloAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = mi_nuevo_qs() <-¿como instancio un nuevo QS o como hago
un dict que se comporte como tal?

return qs
Post by Federico Di Nella
qs = xxx #aca arma el queryset que quieras
return qs
Eso debería funcionarte.
Post by Daniel
Tenia la idea de "engañar" al admin y hacer un modelo ficticio
que en realidad es para ver información colectada de distintos modelos,
agruparlos y demas
para lo que necesito inventar el queryset y pasárselo al admin
sobrescribiendo
el get_queryset
¿es muy descabellado?
¿cómo lo puedo hacer?
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
--
Daniel Malisani
Varela Matias
2015-04-17 20:46:54 UTC
Permalink
Daniel, se me ocurre que podes hacer un vista a nivel de base de datos, y
luego mostrar esa vista en el admin de django.

Ahora no tengo el código a mano, pero más tarde pego una manera de
implementarlo
Post by Daniel
mmm... no me fuciona
¿no deberia ser el override de get_queryset?
el problema es que no se como generar un nuevo queryset
qs = mi_nuevo_qs() <-¿como instancio un nuevo QS o como hago un dict que se comporte como tal?
return qs
El 17 de abril de 2015, 16:50, Federico Di Nella <
Post by Federico Di Nella
qs = xxx #aca arma el queryset que quieras
return qs
Eso debería funcionarte.
Post by Daniel
Tenia la idea de "engañar" al admin y hacer un modelo ficticio
que en realidad es para ver información colectada de distintos modelos,
agruparlos y demas
para lo que necesito inventar el queryset y pasárselo al admin
sobrescribiendo
el get_queryset
¿es muy descabellado?
¿cómo lo puedo hacer?
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
--
Daniel Malisani
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
--
*Matias E. Varela*
San Rafael, Mendoza
Blog: http://matuu.com.ar
Twitter: @matuvarela <http://twitter.com/matuvarela>
Skype: matu.varela
Varela Matias
2015-04-17 20:56:38 UTC
Permalink
Acá lo encontré.

Lo de la vista sería así:

1- creas la vista en la base (también podes usar migrations):

CREATE VIEW vw_abonado As
SELECT a.id, u.nombre, u.apellido, mov.saldo, a.descripcion
FROM "core_abonado" a
LEFT OUTER JOIN "core_usuario" u ON ( a.usuario_id = u.id)
LEFT OUTER JOIN (
select abonado_id, sum(monto) as saldo
from "core_movimientoabonado"
group by abonado_id
) mov ON ( a.id = mov.abonado_id);

2- creas un modelo y especificas que NO sea manejado por el ORM, y el
nombre de la tabla (en la clase Meta):

class AbonadoView(models.Model):
id = models.IntegerField(primary_key=True)
nombre = models.CharField('Nombre', max_length=255)
apellido = models.CharField('Apellido', max_length=255)
descripcion = models.CharField('Descripción', max_length=255,
blank=True)
saldo = models.FloatField()

class Meta:
managed = False
db_table = 'vw_abonado'

Lista, ahora añadis este modelo al admin y podés visualizarlo, filtrar y
demás. Creo que funcionaría. Lo que no va a funcionar es editar ni
eliminar.

Espero te sirva
Post by Varela Matias
Daniel, se me ocurre que podes hacer un vista a nivel de base de datos, y
luego mostrar esa vista en el admin de django.
Ahora no tengo el código a mano, pero más tarde pego una manera de
implementarlo
Post by Daniel
mmm... no me fuciona
¿no deberia ser el override de get_queryset?
el problema es que no se como generar un nuevo queryset
qs = mi_nuevo_qs() <-¿como instancio un nuevo QS o como hago un dict que se comporte como tal?
return qs
El 17 de abril de 2015, 16:50, Federico Di Nella <
Post by Federico Di Nella
qs = xxx #aca arma el queryset que quieras
return qs
Eso debería funcionarte.
Post by Daniel
Tenia la idea de "engañar" al admin y hacer un modelo ficticio
que en realidad es para ver información colectada de distintos modelos,
agruparlos y demas
para lo que necesito inventar el queryset y pasárselo al admin
sobrescribiendo
el get_queryset
¿es muy descabellado?
¿cómo lo puedo hacer?
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
--
Daniel Malisani
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
--
*Matias E. Varela*
San Rafael, Mendoza
Blog: http://matuu.com.ar
Skype: matu.varela
--
*Matias E. Varela*
San Rafael, Mendoza
Blog: http://matuu.com.ar
Twitter: @matuvarela <http://twitter.com/matuvarela>
Skype: matu.varela
Daniel
2015-04-18 02:47:56 UTC
Permalink
Gracias Matías, me re sirivió la solución que propusiste
Post by Varela Matias
Acá lo encontré.
CREATE VIEW vw_abonado As
SELECT a.id, u.nombre, u.apellido, mov.saldo, a.descripcion
FROM "core_abonado" a
LEFT OUTER JOIN "core_usuario" u ON ( a.usuario_id = u.id)
LEFT OUTER JOIN (
select abonado_id, sum(monto) as saldo
from "core_movimientoabonado"
group by abonado_id
) mov ON ( a.id = mov.abonado_id);
2- creas un modelo y especificas que NO sea manejado por el ORM, y el
id = models.IntegerField(primary_key=True)
nombre = models.CharField('Nombre', max_length=255)
apellido = models.CharField('Apellido', max_length=255)
descripcion = models.CharField('Descripción', max_length=255,
blank=True)
saldo = models.FloatField()
managed = False
db_table = 'vw_abonado'
Lista, ahora añadis este modelo al admin y podés visualizarlo, filtrar y
demás. Creo que funcionaría. Lo que no va a funcionar es editar ni
eliminar.
Espero te sirva
Post by Varela Matias
Daniel, se me ocurre que podes hacer un vista a nivel de base de datos, y
luego mostrar esa vista en el admin de django.
Ahora no tengo el código a mano, pero más tarde pego una manera de
implementarlo
Post by Daniel
mmm... no me fuciona
¿no deberia ser el override de get_queryset?
el problema es que no se como generar un nuevo queryset
qs = mi_nuevo_qs() <-¿como instancio un nuevo QS o como hago un dict que se comporte como tal?
return qs
El 17 de abril de 2015, 16:50, Federico Di Nella <
Post by Federico Di Nella
qs = xxx #aca arma el queryset que quieras
return qs
Eso debería funcionarte.
Post by Daniel
Tenia la idea de "engañar" al admin y hacer un modelo ficticio
que en realidad es para ver información colectada de distintos
modelos, agruparlos y demas
para lo que necesito inventar el queryset y pasárselo al admin
sobrescribiendo
el get_queryset
¿es muy descabellado?
¿cómo lo puedo hacer?
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
--
Daniel Malisani
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
--
*Matias E. Varela*
San Rafael, Mendoza
Blog: http://matuu.com.ar
Skype: matu.varela
--
*Matias E. Varela*
San Rafael, Mendoza
Blog: http://matuu.com.ar
Skype: matu.varela
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
--
Daniel Malisani
Matias Varela
2015-04-18 20:08:40 UTC
Permalink
Gracias Matías, me re sirivió la solución que propusiste
Buenísimo que te haya servido.

Abrazo
--
*Matías E. Varela*
Skype: matu.varela
Jadder: ***@python.org.ar
Federico Di Nella
2015-04-17 20:59:08 UTC
Permalink
Tenés razón, me confundí con el metodo de los filters.

El problema es que el queryset es la representacion de una consulta hecha a
la db. No se si se pueden agregar cosas manualmente.

Cuando llego a mi casa armo algo para probar y te vuelvo a escribir.

Suerte!
Post by Daniel
mmm... no me fuciona
¿no deberia ser el override de get_queryset?
el problema es que no se como generar un nuevo queryset
qs = mi_nuevo_qs() <-¿como instancio un nuevo QS o como hago un dict que se comporte como tal?
return qs
El 17 de abril de 2015, 16:50, Federico Di Nella <
Post by Federico Di Nella
qs = xxx #aca arma el queryset que quieras
return qs
Eso debería funcionarte.
Post by Daniel
Tenia la idea de "engañar" al admin y hacer un modelo ficticio
que en realidad es para ver información colectada de distintos modelos,
agruparlos y demas
para lo que necesito inventar el queryset y pasárselo al admin
sobrescribiendo
el get_queryset
¿es muy descabellado?
¿cómo lo puedo hacer?
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
--
Daniel Malisani
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
Loading...