Jak wykonywać obliczenia matematyczne w szablonie Django?


104

Chce to zrobić:

100 - {{ object.article.rating_score }} 

Tak na przykład, wyjście byłoby 20gdyby {{ object.article.rating_score }}wyniósł 80.

Jak to zrobić na poziomie szablonu? Nie mam dostępu do kodu Pythona.

Odpowiedzi:


155

Możesz użyć addfiltra:

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

37
Do mnożenia i dzielenia możesz nadużywać wbudowanego widthratiotagu szablonu. Aby obliczyć użycie a * b {% widthratio a 1 b %}, dla użycia a / b {% widthratio a b 1 %}. Jedyną wadą jest to, że wyniki są zaokrąglane do liczby całkowitej przed zwróceniem. Używanie tagu szablonu współczynnika szerokości Django do mnożenia i dzielenia
elim

2
@Erik to powinna być jego własna odpowiedź - dużo lepsze rozwiązanie.
nhinkle

1
Zaktualizowany link do dodania w Dokumentach
rnevius

A jeśli użyję w ten sposób: {{object.article.rating_score | add: "{% widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan

@Daniel Roseman, czy mogę dodać wartość procentową w ten sposób: {{object.article.rating_score | add: "{% widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan

31

Użyj django-mathfilters . Oprócz wbudowanego filtra dodawania zapewnia filtry do odejmowania, mnożenia, dzielenia i pobierania wartości bezwzględnych.

W konkretnym przykładzie powyżej użyłbyś {{ 100|sub:object.article.rating_score }}.


20

Ogólnie zaleca się wykonanie tego obliczenia w swoim widoku. W przeciwnym razie możesz użyć filtra dodawania.


Jak to zrobić wewnątrz pętli w szablonie?
bismigalis
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.