Re: [Django-es] Operaciones con variables en templates

5,552 views
Skip to first unread message

Angel Alvarez

unread,
Jun 18, 2012, 7:30:32 PM6/18/12
to djan...@googlegroups.com
El día 18 de junio de 2012 20:06, Daniel Perez <dape...@gmail.com> escribió:
> Hola a todos,
> Soy algo nuevo en esto, pero poco a poco estoy logrando cosillas.
>
> Alguien podría indicarme como realizar operaciones matematicas (suma, resta,
> multiplicación, división) en el template con variables (tipo entero o
> decimal)?
>
> He intentado varias cosas pero sin resultado.
>
Los templates son para mostrar datos
Las operaciones matematicas tenes que hacerlas en las vistas
Lee bastante sobre el patron MVC y vas a entender
> Gracias,
>
> --
> Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del
> Framework Django de habla hispana" de Grupos de Google.
> Si quieres publicar en este grupo, envía un mensaje de correo
> electrónico a djan...@googlegroups.com
> Para anular la suscripción a este grupo, envíe un mensaje a
> django-es-...@googlegroups.com
> Para obtener más opciones, visita este grupo en
> http://groups.google.com.bo/group/django-es.



--
Angel C. Alvarez

Ernesto Guevara

unread,
Jun 18, 2012, 7:34:17 PM6/18/12
to djan...@googlegroups.com
Para hacer cuentas podes usar Aggregation:

https://docs.djangoproject.com/en/dev/topics/db/aggregation/#cheat-sheet

Saludos!

2012/6/18 Angel Alvarez <angelclau...@gmail.com>

Daniel Perez

unread,
Jun 20, 2012, 3:00:44 PM6/20/12
to djan...@googlegroups.com
Hola y gracias a ambos,

Entiendo perfectamente las especificaciones del patron MVC (MTV Django) y ciertamente lo ideal es realizar estas operaciones en la vista y pasarselas al template. Entendido esto, sigo teniendo dudas (basadas fundamentalmente en que soy un autentito novato en esto):

Teniendo esto:
models.py
class Thing(models.Model):
money = models.DecimalField(max_digits=8, decimal_places=2)
people = models.IntegerField(help_text='Texto de ayuda') 

views.py
def showthings(request):
things = Thing.objects.all()
return render_to_response('showthings.html', {'things':things})

showthings.html
{% for thingitem in things %}
<li>
{{thingitem.money}}
{{thingitem.people}}
</li>
{% empty %}
<li>Aún no hay nada</li>
{% endfor %}

Como puedo mostrar por cada thingitem, la división por ejemplo entre los campos money/people.

Muchas gracias de nuevo

El martes, 19 de junio de 2012 00:06:14 UTC+1, Daniel Perez escribió:
Hola a todos,
Soy algo nuevo en esto, pero poco a poco estoy logrando cosillas.

Alguien podría indicarme como realizar operaciones matematicas (suma, resta, multiplicación, división) en el template con variables (tipo entero o decimal)?

He intentado varias cosas pero sin resultado.

Gracias,

Angel Alvarez

unread,
Jun 20, 2012, 6:08:57 PM6/20/12
to djan...@googlegroups.com
Podes agregar un campo en el modelo
o podes en la vista generar una lista de resultados y agregarla en el
response como un campo mas

Jhónatan Mosquera

unread,
Jun 20, 2012, 8:58:37 PM6/20/12
to djan...@googlegroups.com
Uno de las soluciones (según yo) es agregar un método al modelo y no un campo mas, valga decir algo como esto:
modelys.py
class Thing(models.Model):
    money = models.DecimalField(max_digits=8, decimal_places=2) 
    people = models.IntegerField(help_text='Texto de ayuda')
    
    def division(self):
        resultado = self.money / self.people
        return resultado

showthings.html
{% for thingitem in things %}
<li>
{{thingitem.money}}
{{thingitem.people}}
{{thingitem.division}} 

</li>
{% empty %}
<li>Aún no hay nada</li>
{% endfor %}

-- 
------------------------------------------
Jhónatan Mosquera Tabra

Jhónatan Mosquera

unread,
Jun 20, 2012, 9:18:47 PM6/20/12
to djan...@googlegroups.com
O también usando los filtros de de los templates podrías lograr sacar el resultado que quieres, lee un poco de la documentacion
https://docs.djangoproject.com/en/1.4/howto/custom-template-tags/ 
al final cuando construyas tu filtro para sacar dicho dato tendrías que usar una linea parecida a esta
{{ thingitem.money|mifiltro:thingitempeople }}

Diego Uribe Gamez

unread,
Jun 21, 2012, 10:13:22 AM6/21/12
to djan...@googlegroups.com
Cargas otra variable a la plantilla que contenga la división, esa variable tiene que hacer un bucle y contener la división: 

from itertools import *
 for elemento in things:
        division = 
        queythings = chain(querythings,[division])

queythings, es un query que funciona de la misma manera en los template, a mi me funciono muy bien.

No estoy seguro de los [ ] en [division], toca que pruebes en terminal #python manage.py shell

Mas información:

Saludos.

--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.



--
 Diego Alonso Uribe Gamez

Desarrollador web

Twitter: @DiegoUG

Google+: http://gplus.to/diegoug




Carlos Luis Jordán Murillo

unread,
Jun 21, 2012, 11:11:08 AM6/21/12
to djan...@googlegroups.com
Django es muy ordenado que impide realizar operaciones dentro del template, para eso están las vistas y los modelos que ahí se los hace
Saludos
Carlos Jordán
Ingeniero  
Escuela Superior Politécnica del Litoral
Ciencias Computacionales especialización Sistemas de Información

Devilsito

unread,
Sep 26, 2020, 11:35:20 PM9/26/20
to Django-es
Carlos, como yo aún estoy aprendiendo Django mi gran duda es ¿Dónde es recomendable hacer los cálculos según valores de campos existentes ya en variables?,. Por ejemplo todos los cálculos que se hacen en un sistema de remuneraciones, que son bastantes, y que la final se deben guardar en la base de datos.
Unos dicen que en los modelos, otros en las vistas
Lo importante es que sea en el lugar adecuado para hacer cálculos u operatoria compleja que después deberá mostrarse en una plantilla o guardarse directamente en la BD. Adecuado me refiero a que la perfomance no se vea ralentizada por tener los calculos en lugar inadecuado.
Quedo atento a tus indicaciones. desde ya te agradezco tu ayuda

carlos

unread,
Sep 27, 2020, 6:36:31 PM9/27/20
to djan...@googlegroups.com
Todo va en dependencia si son cálculos no muy complejos lo puedes realizar en los modelos y que automáticamente se calculen
ya sea sobreescribiendo el método save o en post con signals, asi evitas hacer query y cálculos simples en las vistas, ahora si son
cálculos de conteos, desviaciones estándar, media.o cosas estadísticas más avanzadas lo mejor es que lo hagas en las vistas y se lo envias
a las plantillas. Espero haberte aclarado.

saludos

--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/django-es/3833200b-121a-459f-8dc8-ec4e333716afn%40googlegroups.com.


--
att.
Carlos Rocha
Reply all
Reply to author
Forward
0 new messages