¿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.