これにはカスタム フィルタを使用する必要があります。
これを行うには、次の 2 つの方法があります。
1)negate
フィルターを定義できます。
# negate_filter.py
from django import template
register = template.Library()
@register.filter
def negate(value):
return -value
次に、テンプレートでコードを先頭に追加し、に{% load negate_filter %}
置き換えます。{{ -qty }}
{{ qty|negate }}
buy_sell
2) 必要に応じて、全体を 1 つのフィルターに置き換えることもできます。
# buy_sell_filter.py
from django import template
register = template.Library()
@register.filter
def buy_sell(value):
if value > 0 :
return 'sell %s' % value
else :
return 'buy %s' % -value
次に、テンプレートは次のようになります
{% if qty %} Please, sell {{ qty|buy_sell }} products.{% endif %}
文字列全体をフィルターに含めて、テンプレート全体を {{ qty|buy_sell }} にすることもできます。
テンプレートの残りの部分に応じて、どちらのオプションも適切です。たとえば、買いをネガティブに、売りをポジティブに使用する文字列がたくさんある場合は、2 番目の文字列を実行します。