Foros del Web » Programando para Internet » Python »

Sumar campos de un model

Estas en el tema de Sumar campos de un model en el foro de Python en Foros del Web. Hola. mi duda es bastante sencilla. (espero). Es la siguiente. Tengo un modelo con los campos A,B,C,D,E,F,G,H. y necesito mostrar la información en una vista. ...
  #1 (permalink)  
Antiguo 27/10/2011, 09:59
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 2 meses
Puntos: 16
Pregunta Sumar campos de un model

Hola. mi duda es bastante sencilla. (espero). Es la siguiente.
Tengo un modelo con los campos A,B,C,D,E,F,G,H.
y necesito mostrar la información en una vista. Pero en la vista solo quiero mostrar los campos A,B,C,D y en otra columna la suma de los campos E,F,G y H. el total entre ellos.
eso en sql es algo sencillo. pero por medio de las consultas de django no se como decirle que me sume tales campos. alguien podria decirme? gracias.
  #2 (permalink)  
Antiguo 27/10/2011, 10:07
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Sumar campos de un model

Supongo que quieres algo como esto, pero con sum http://stackoverflow.com/questions/3...t-and-group-by
  #3 (permalink)  
Antiguo 27/10/2011, 12:09
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 2 meses
Puntos: 16
Respuesta: Sumar campos de un model

Gracias por responder razpeitia pero no, porque no quiero el total de cada columna. sino que quiero la suma de esas columnas por cada fila. me explico? Por ejemplo tengo las siguientes columnas
Cita:
A B C D E
===========================================
2 5 5 1 5
7 2 4 1 7
y quiero el resultado de la suma de todas por cada fila asi:
Cita:
SUMA
=====
18
21
en ese annonate yo veo que solo se le pasa un campo. se puede utilizar para esto tambien? gracias.

Última edición por rjulio21; 27/10/2011 a las 12:27
  #4 (permalink)  
Antiguo 27/10/2011, 14:06
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Sumar campos de un model

Cita:
Iniciado por rjulio21 Ver Mensaje
eso en sql es algo sencillo.
No veo como sea algo sencillo en SQL.

Pero si tienes ese caso entonces puedes hacer algo como:
Código Python:
Ver original
  1. modelObjects = list(MyModel.objects.all())
  2. for modelObject in modelObjects:
  3.     modelObject.A + modelObject.B + ... + modelObject.G

Aunque también podrías usar extra para sumar las columnas, la diferencia es que esta se hará la base de datos y no el programa.

Código Python:
Ver original
  1. MyModel.objects.extra(
  2.     select={'fieldsum':'A + B + ... + G'},
  3.     order_by=('fieldsum',)
  4. )
  #5 (permalink)  
Antiguo 27/10/2011, 14:20
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 2 meses
Puntos: 16
Respuesta: Sumar campos de un model

ok razpeitia.
en sql el query es asi:
Código SQL:
Ver original
  1. SELECT a,b,c,d,e+f+g+h AS suma FROM nombreTabla;
y Me funciona. Haciendo lo que quiero.
Gracias por tu ayuda. pero tengo una duda. logicamente, según lo que digo el campo "suma" es solo un alias y no una columna existente, por tanto no funcionaria en el order_by del extra. cierto? De todos modos muchas gracias. probare el codigo de arriba. y aviso si me funciono.
  #6 (permalink)  
Antiguo 27/10/2011, 15:58
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Sumar campos de un model

Cita:
Iniciado por rjulio21 Ver Mensaje
ok razpeitia.
en sql el query es asi:
Código SQL:
Ver original
  1. SELECT a,b,c,d,e+f+g+h AS suma FROM nombreTabla;
y Me funciona. Haciendo lo que quiero.
Gracias por tu ayuda. pero tengo una duda. logicamente, según lo que digo el campo "suma" es solo un alias y no una columna existente, por tanto no funcionaria en el order_by del extra. cierto? De todos modos muchas gracias. probare el codigo de arriba. y aviso si me funciono.
Lo del order by extra si funciona, tal como lo esperas.

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 18:40.