使用Django标签有for循环的问题

时间:2011-03-30 13:45:03

标签: python html django tags

我似乎遇到了使用for循环的Django问题。出于某种原因,当我在循环中显示变量{{count}}时,它似乎不会在网页上打印出来。 (它在同一模板的循环外工作)

基本上我创建了一个count变量,它会计算Destroyed中的所有item.itemstatushistory_set.latest项。由于某种原因,它似乎不起作用。

{%for item in items%}
       {%if item.itemstatushistory_set.latest == "Destroyed" %}
               {{count|add:"1" }}
       {% endif %}
{%endfor%}

2 个答案:

答案 0 :(得分:4)

item.itemstatushistory_set.latest 将返回查询集中的最新对象,以便您将对象与字符串进行比较。

itemstatushistory 模型的unicode表示肯定会被“销毁”吗?

在itemstatushistory中有一个函数可能更容易返回它是否被销毁而不是在模板中进行比较?或者甚至更好,在项目模型中有一个函数来返回最新的itemstatushistory对象,它可以有一个is_destroyed函数?

class Item(models.Model):
    status_history = models.ManyToManyField(ItemStatusHistory):
    ...

def get_latest_status(self):
    return self.status_history.all().latest()

class ItemStatusHistory(models.Model):
    destroyed = models.BooleanField(default=False)

def is_destroyed(self):
    if self.destroyed:
        return true;
    return false;

{% for item in items %}
    {% if item.get_latest_status.is_destroyed %}
        {{ count|add:"1" }}
    {% end if %}
{% endfor %}

答案 1 :(得分:0)

我赞同帖子的评论。首先需要确保正在执行if look。很可能是你永远不会进入if循环的情况。