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.