1

我在模板中用简单的 for 循环编写时遇到问题。这就是我试图用伪代码编写的。

total = 0;
for each dividend
  total += dividend.amount;
  echo total;
endfor

但我不知道如何在 django 模板文件中编写 += 行。我知道可能我应该在views.py 中执行此操作,但不知何故我在模板中执行此操作。这是我的详细代码.html:

{% with totalDividend=0.0 %}
{% for dividend in stock.dividend_set.all %}    
    [ {{ dividend.date|date:"U000" }} , {{ totalDividend|add:dividend.amount }} ],
{% endfor %}
{% endwith %}

但 totalDividend|add:dividend.amount 不起作用,有零。如何在模板文件中添加这个简单的循环?无论如何,我正在为股息.date 循环。

4

1 回答 1

0

您可以编写模板标签来设置上下文值:

from django.template.base import Library
register = Library()

@register.simple_tag(takes_context=True)
def set_by(context, k, v):
    context[k] = v
    return v

{# template #}    
{% with totalDividend=0.0 %}
{% for dividend in stock.dividend_set.all %}    
    [ {{ dividend.date|date:"U000" }} ,
      {% set_by 'totalDividend' totalDividend|add:dividend.amount %} ],
{% endfor %}
{% endwith %}

# OR
@register.assignment_tag(takes_context=True)
def setBy(context, k, v):
    context[k] = v
    return v

{% with totalDividend=0.0 %}
{% for dividend in stock.dividend_set.all %}    
    [ {{ dividend.date|date:"U000" }} ,
      {% set_by 'totalDividend' totalDividend|add:dividend.amount as totalDividend %}{{ totalDividend }} ],
{% endfor %}
{% endwith %}
于 2013-04-18T16:56:50.597 回答