2017-07-17 9 views
0

2つの数値を分割するためにテンプレートタグを使用しています。この問題は、分母がゼロのときに発生します。私は演算子でifを使用しようとしていますが、これは動作していないようです。Djangoテンプレート:0で除算するためにifフィルタを書く

<td class="data">${% if nnl_asof_mtdgoal %}{{ nl_mtdgoal.get_mtd_newloansgoal|div:nnl_asof_mtdgoal.get_mtd_numnewloansgoals |floatformat:"2"| intcomma }}{% endif %} 

これは

File "C:\pycharm-virtenv\DjangoPostgres\lib\site-packages\mathfilters\templatetags\mathfilters.py" in div 
    72.   return nvalue/narg 

Exception Type: ZeroDivisionError at /reports/goals/ 
Exception Value: float division by zero 

それはゼロによる除算そのので、必要として私は、このエラーが発生します。私はこれをしようとすると:

<td class="data">${% if nnl_asof_mtdgoal !="0" %}{{ nl_mtdgoal.get_mtd_newloansgoal|div:nnl_asof_mtdgoal.get_mtd_numnewloansgoals |floatformat:"2"| intcomma }}{% endif %} 
        </td> 

私はこのエラーを取得:

Exception Type: TemplateSyntaxError at /reports/goals/ 
Exception Value: Could not parse the remainder: '!="0"' from '!="0"' 

を私は、これは簡単なものでなければなら知っているが、私は部門がある場合にのみ、テーブルを描画する方法を見つけ出すように見えることはできません真、すなわちゼロで割っていない。

答えて

2

あなたはすなわち

{% if nnl_asof_mtdgoal != "0" %} 

nnl_asof_mtdgoalが整数ではなく文字列だった場合、あなたはどうしたら、あなたのテンプレートタグで!=の後にスペースが必要になります。

{% if nnl_asof_mtdgoal != 0 %} 

あなたにdiv:nnl_asof_mtdgoal.get_mtd_numnewloansgoalsを使用しているのでテンプレートの場合は、nnl_asof_mtdgoalが整数でないかのように見えるため、チェックを次のように変更してください。

{% if nnl_asof_mtdgoal.get_mtd_numnewloansgoals != 0 %} 

Djangoはテンプレートからロジックを取り除くことをお勧めします。ビューに計算を移す(そしてゼロをチェックする)ことをお勧めします。

+0

整数ですが、スペースを試しましたが、ゼロ誤差で浮動小数点除算を取得しています。私がテンプレートでこれを行う理由は、これらの値はデータベースに書き込む必要はなく、ユーザ入力のためにバックエンドで実行している他の数値計算の結果のみです。 –

+0

'nnl_asof_mtdgoal'がゼロに等しいかどうかをチェックしていますが、' nnl_asof_mtdgoal.get_mtd_numnewloansgoals'で除算しています。値がデータベースに書き込む必要があるかどうかは関係ありません。ビューに 'nnl_asof_mtdgoal'がある場合は、ビューで計算を行うことができます。 – Alasdair

+0

ありがとう!私はまだゼロがあるかどうかを認識することができません。私は 'code'ifnnl_asof_mtdgoal.get_mtd_numnewloansgoals!= 0を試みましたが、依然としてfloatエラーを受け取りました。テンプレートの外でこれらの計算を実行する必要があります。現在私は別の.pyファイルで計算を行い、テンプレートタグを使ってそれを指すようにしているので、views.pyファイルにはビュー関連のコードしかない。再度、感謝します! –

関連する問題