2011-06-08 19 views
78

私はこれをしたい:{{object.article.rating_scoreは}} "80" 等しかった場合Djangoテンプレートで数学を行うには?

100 - {{object.article.rating_score}} 

ので、例えば、出力が "20" であろう。どのようにテンプレートレベルでこれを行うには?私はPythonコードにアクセスできません。

答えて

114

あなたがaddフィルタを使用することができます。ビルトインのアドフィルタに加えて、絶対値を減算、乗算、除算、および取るフィルタを提供します。

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

+25

乗算と除算のために、組み込みの 'widthratio'テンプレートタグを悪用することができます。 a * bを計算するには '{%widthratio a 1 b%}'を使用し、a/bには '{%widthratio a b 1%}'を使用します。欠点のみ、返される前に整数に丸められます。 [Djangoのwidthratioテンプレートタグを使って乗算と除算を行う](http://slacy.com/blog/2010/07/using-djangos-widthratio-template-tag-for-multiplication-division/) – michaell

+7

django-mathfiltersを使用します。 http://pypi.python.org/pypi/django-mathfilters – Erik

+2

@Erikこれは独自の答えでなければなりません。 – nhinkle

12

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

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

ただし、間違っていますが、ほとんどの場合、テンプレートロジックからビューロジックを分離することをお勧めします。 [Djangoの設計哲学](https://docs.djangoproject.com/en/dev/misc/design-philosophies/?from=olddocs#separate-logic-from-presentation) –

+0

テンプレートの中でどのようにループ処理を行うのですか? – bismigalis

関連する問題