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.

Jawaban:


154

Anda dapat menggunakan addfilter:

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

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


19

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


Bagaimana Anda melakukannya di dalam loop in template?
bismigalis
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.