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

Tommy
fuente

Respuestas:

154

Puede utilizar el addfiltro:

{{ object.article.rating_score|add:"-100" }}
Daniel Roseman
fuente
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 }}.

Erik
fuente
19

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

bdd
fuente
¿Cómo lo haces dentro del bucle en la plantilla?
Bismigalis