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.

Antworten:


154

Sie können den addFilter verwenden:

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

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


19

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


Wie machst du es in der Schleife in der Vorlage?
Bismigalis
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.