¿Cómo hacer matemáticas en una plantilla de Django?


103

Quiero hacer esto:

100 - {{ object.article.rating_score }} 

Así, por ejemplo, la salida sería 20si {{ object.article.rating_score }}igualado 80.

¿Cómo hago esto a nivel de plantilla? No tengo acceso al código Python.

Respuestas:


154

Puede utilizar el addfiltro:

{{ object.article.rating_score|add:"-100" }}

37
Para multiplicar y dividir, puede hacer un mal uso de la widthratioetiqueta de plantilla incorporada . Para calcular el uso de a * b {% widthratio a 1 b %}, para el uso de a / b {% widthratio a b 1 %}. El único inconveniente es que los resultados se redondean a un número entero antes de devolverlos. Usando la etiqueta de plantilla widthratio de Django para multiplicación y división
elim

2
@Erik esa debería ser su propia respuesta: una solución mucho mejor.
nhinkle

1
Enlace actualizado para agregar en los Documentos
rnevius

¿Qué sucede si utilizo así: {{object.article.rating_score | add: "{% widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan

@Daniel Roseman, ¿puedo agregar después de aplicar un porcentaje como este: {{object.article.rating_score | add: "{% widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan,

31

Utilice django-mathfilters . Además del filtro de suma incorporado, proporciona filtros para restar, multiplicar, dividir y tomar el valor absoluto.

Para el ejemplo específico anterior, usaría {{ 100|sub:object.article.rating_score }}.


19

Generalmente se recomienda que haga este cálculo en su vista. De lo contrario, puede utilizar el filtro de adición.


¿Cómo lo haces dentro del bucle en la plantilla?
Bismigalis
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.