Bagaimana melakukan matematika dalam templat Django?

103

Aku ingin melakukan ini:

100 - {{ object.article.rating_score }} 

Jadi misalnya, output akan 20jika {{ object.article.rating_score }}menyamai 80.

Bagaimana saya melakukan ini di level template? Saya tidak memiliki akses ke kode Python.

Tommy
sumber

Jawaban:

154

Anda dapat menggunakan addfilter:

{{ object.article.rating_score|add:"-100" }}
Daniel Roseman
sumber
37
Untuk perkalian dan pembagian Anda dapat menyalahgunakan widthratiotag template bawaan. Untuk menghitung penggunaan a * b {% widthratio a 1 b %}, untuk penggunaan a / b {% widthratio a b 1 %}. Cuma kekurangannya, hasilnya dibulatkan menjadi integer sebelum dikembalikan. Menggunakan tag cetakan rasio lebar Django untuk perkalian & pembagian
elim
2
@Erik itu harus menjadi jawabannya sendiri - solusi yang jauh lebih baik.
nhinkle
1
Tautan diperbarui untuk ditambahkan ke Dokumen
rnevius
Bagaimana jika saya menggunakan seperti ini: {{object.article.rating_score | add: "{% widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan
@Daniel Roseman dapat saya tambahkan setelah menerapkan persentase seperti ini: {{object.article.rating_score | add: "{% widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan
31

Gunakan django-mathfilters . Selain filter tambahan bawaan, ini menyediakan filter untuk mengurangi, mengalikan, membagi, dan mengambil nilai absolut.

Untuk contoh khusus di atas, Anda akan menggunakan {{ 100|sub:object.article.rating_score }}.

Erik
sumber
19

Biasanya, Anda disarankan untuk melakukan penghitungan ini dalam pandangan Anda. Jika tidak, Anda dapat menggunakan filter tambah.

bdd
sumber
Bagaimana Anda melakukannya di dalam loop in template?
bismigalis