Implementamos tecnologia y es asi como lo hacemos

Agregacion en Django

Escrito el Marzo 11, 2009 a las 11:16 AM por Camilo Nova

Trabajando con modelos en Django para aplicaciones web de alto perfil, como las desarrolladas por AxiaCore, nos encontrábamos frecuentemente con tener que hacer cálculos aritméticos básicos manualmente sobre un conjunto de datos en particular.

Por ejemplo si necesitábamos obtener el total de ventas de un mes determinado, se tenia que iterar cada elemento del conjunto de datos (QuerySet) e ir sumando en una variable cada valor obtenido, los que hemos trabajado con aplicaciones conectadas a una base de datos sabemos que existen funciones de SQL con SUM() que efectúan esa tarea mucho mas cómodamente.

Afortunadamente para la nueva versión de Django, próxima a salir, la v1.1 existe la posibilidad de utilizar ‘Agregaciones’ y ‘Anotaciones’ que permiten efectuar este tipo de cálculos de una manera mucho mas fácil y recargando la responsabilidad de los cálculos a la base de datos y no a la lógica de la aplicación.

Factura.objects.aggregate(
    Avg('precio'), Max('precio'), Min('precio'), Sum('precio')
)

Mas información en la documentación oficial del proyecto.

Enlace: http://docs.djangoproject.com/en/dev/topics/db/aggregation/

Bookmark and Share

3 Responses to “Agregacion en Django”

  1. Martin Says:
    Septiembre 1st, 2009 at 12:08 AM

    Hola muy buena informacion una pregunta que queria hacerte es la siguiente como podria mostrar en el template el valor se una suma con aggregate por ejemplo si tengo la siguiente sentecia:
    precio_total = Factura.objects.aggregate(Sum(‘precio’))

    yo ando al template la variable precio_total verdad tonces en el template yo lo pongo asi {{ precio_total }} pero este me muestra lo siquite: {‘precio__sum’: 21} pero yo solo quiero el 21 no se si me doy a entender

    gracias

  2. Camilo Nova Says:
    Septiembre 1st, 2009 at 7:27 AM

    Hola, la forma de imprimir el valor que buscas es {{ precio_total.0 }} en la plantilla.

    O en la vista retorna este valor precio_total = Factura.objects.aggregate(Sum(’precio’))['precio__sum'] y en la plantilla {{ precio_total }}

    Saludos

  3. Martin Says:
    Septiembre 1st, 2009 at 9:51 AM

    gracias estare probando

Deja un comentario

AxiaCore Blog

Publicidad

Etiquetas

Nosotros Leemos

Comentarios Recientes:

  • Jorge Chávez: Algo que me ha interesado en los últimos días es intentar agregar nuevos widgets en el filtro, que...
  • Jorge Chávez: Excelente post! Sin duda los filtros son un problema con la falta de documentación oficial, pero en lo...
  • CBTIS_102: pzz la vdd python es un programa muy completo y facil, pero a veces los que enseñan python son pesimos,...
  • katerine: CORIDAL SALUDO, ES HERMOSA ESTA LABOR. ME ENCANTARIA SABER LOS DATOS DE LA FUNDACION PARA ACERCARME A...
  • Camilo Nova: Copyright © 2008 AxiaCore S.A.S. – info@axiacore.com – http://axiacore.com

Enlaces Recientes:

Archivo

Admin