123 votes

Comment faire des maths dans un modèle Django ?

Je veux le faire :

100 - {{object.article.rating_score}} 

Ainsi, par exemple, le résultat sera "20" si {{objet.article.rating_score}} est égal à "80". Comment faire cela au niveau du modèle ? Je n'ai pas accès au code python.

184voto

Daniel Roseman Points 199743

Vous pouvez utiliser le add filtre :

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

48 votes

Pour la multiplication et la division, vous pouvez abuser de l'outil intégré widthratio étiquette de modèle. Pour calculer a*b, utilisez {% widthratio a 1 b %} pour une utilisation a/b {% widthratio a b 1 %} . Seul inconvénient, les résultats sont arrondis à un nombre entier avant d'être retournés. Utilisation de la balise de gabarit widthratio de Django pour la multiplication et la division

2 votes

@Erik cela devrait être sa propre réponse - une bien meilleure solution.

2 votes

Lien mis à jour vers ajouter dans les Docs

42voto

Erik Points 2480

Utilisez django-mathfilters . En plus du filtre d'addition intégré, il fournit des filtres pour soustraire, multiplier, diviser et prendre la valeur absolue.

Pour l'exemple spécifique ci-dessus, vous utiliserez {{ 100|sub:object.article.rating_score }}.

21voto

Bob Points 1688

Il est généralement recommandé d'effectuer ce calcul dans votre vue. Sinon, vous pouvez utiliser le filtre d'ajout.

2 votes

Comment le faire dans la boucle du modèle ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X