Wie rechne ich in einer Django-Vorlage?

103

Ich möchte das machen:

100 - {{ object.article.rating_score }} 

So würde zum Beispiel die ausgegeben werden , 20wenn {{ object.article.rating_score }}erreicht 80.

Wie mache ich das auf Vorlagenebene? Ich habe keinen Zugriff auf den Python-Code.

Tommy
quelle

Antworten:

154

Sie können den addFilter verwenden:

{{ object.article.rating_score|add:"-100" }}
Daniel Roseman
quelle
35
Für die Multiplikation und Division können Sie das integrierte widthratioVorlagen-Tag missbrauchen . Zur Berechnung der Verwendung von a * b für die Verwendung {% widthratio a 1 b %}von a / b {% widthratio a b 1 %}. Einziger Nachteil: Die Ergebnisse werden vor der Rückkehr auf eine Ganzzahl gerundet. Verwenden von Djangos Widthratio-Vorlagen-Tag für Multiplikation und Division
Elim
2
@Erik das sollte seine eigene Antwort sein - viel bessere Lösung.
nhinkle
1
Aktualisierter Link zum Hinzufügen in den Docs
Rnevius
Was ist, wenn ich so benutze: {{object.article.rating_score | add: "{% widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan
@ Daniel Roseman kann ich hinzufügen, nachdem ich den Prozentsatz wie folgt angewendet habe: {{object.article.rating_score | add: "{% widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan
31

Verwenden Sie Django-Math-Filter . Zusätzlich zum integrierten Add-Filter bietet es Filter zum Subtrahieren, Multiplizieren, Dividieren und Nehmen des Absolutwerts.

Für das spezifische Beispiel oben würden Sie verwenden {{ 100|sub:object.article.rating_score }}.

Erik
quelle
19

Im Allgemeinen wird empfohlen, diese Berechnung aus Ihrer Sicht durchzuführen. Andernfalls können Sie den Add-Filter verwenden.

bdd
quelle
Wie machst du es in der Schleife in der Vorlage?
Bismigalis