Djangoテンプレートで数学を行う方法は?


103

私はこれをしたいです:

100 - {{ object.article.rating_score }} 

したがって、たとえば、出力はequaldの20場合に{{ object.article.rating_score }}なり80ます。

テンプレートレベルでこれを行うにはどうすればよいですか?Pythonコードにアクセスできません。

回答:


154

addフィルターを使用できます。

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

36
乗算と除算では、組み込みのwidthratioテンプレートタグを誤用する可能性があります。a {% widthratio a 1 b %}/ b useの場合、a * b useを計算します{% widthratio a b 1 %}。唯一の欠点は、結果が返される前に整数に丸められることです。乗算と除算にDjangoのwidthratioテンプレートタグを使用する
elim

2
@Erikそれはそれ自身の答えであるべきです-より良い解決策。
nhinkle 2014年

1
ドキュメントに追加するリンクを更新
rnevius 2015

次のように使用するとどうなりますか:{{object.article.rating_score | add: "{%widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan

@Daniel Rosemanは、次のようなパーセンテージを適用した後に追加できます:{{object.article.rating_score | add: "{%widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan

31

django-mathfiltersを使用してください。組み込みの追加フィルターに加えて、減算、乗算、除算、および絶対値を取るフィルターを提供します。

上記の特定の例では、を使用します{{ 100|sub:object.article.rating_score }}


19

一般に、この計算はビューで行うことをお勧めします。それ以外の場合は、追加フィルターを使用できます。


テンプレートのループ内でどのように実行しますか?
bismigalis 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.