Возникли проблемы с циклами for с тегами Django - PullRequest
0 голосов
/ 30 марта 2011

У меня, похоже, проблема с Django, использующим цикл for.По какой-то причине, когда я отображаю переменную {{count}} в цикле, она не распечатывается на веб-странице.(Он работает вне цикла в том же шаблоне)

По сути, я создал переменную count, которая будет считать все Destroyed элементов в item.itemstatushistory_set.latest.По некоторым причинам это, кажется, не работает.

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

Ответы [ 2 ]

4 голосов
/ 30 марта 2011

item.itemstatushistory_set.latest вернет последний объект из набора запросов, поэтому вы сравниваете объект со строкой.

Представляет ли Unicode представление itemstatushistory модель определенно "Уничтоженным"?

Возможно, было бы проще иметь функцию в 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 %}
0 голосов
/ 31 марта 2011

Я повторяю комментарий пастилегс.Сначала вы должны убедиться, что ваш if выполняется.Вполне возможно, что вы никогда не входите в цикл if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...