Запрос Django: хотите подсчитать набор в шаблоне

У меня есть список элементов, который отображает только последний статус каждого элемента. То, что я хочу сделать сейчас, это считать. Проблема в том, что функция count будет работать правильно, только если latest будет удалена, однако это дало бы мне что-то вроде этого.

элемент1=1 элемент2=33 элемент3=12 элемент4=0

По сути, он будет подсчитывать все статусы для этого элемента, но ему нужно сосредоточиться на подсчете последнего статуса, поэтому ответ в этом случае должен быть 3. Вот почему мне нужен последний latest. Существует также связь внешнего ключа между элементом хранилища и статусом, элемент может иметь много статусов или, если нет, вообще не иметь статуса.

#views.py
client = models.Client.objects.get(pk = client_id)
items = client.storageitem_set.all()

шаблон

{% for item in items %}
        {{item.itemstatushistory_set.latest}}
{% endfor %}

person Shehzad009    schedule 04.04.2011    source источник


Ответы (1)


Мне кажется, что все, что вам нужно, это подсчет всех элементов, имеющих статус, а не подсчет всех статусов, связанных с вашими элементами. Это правильно? Если это так, это сделает это:

count = models.StorageItem.objects.filter(client=client_id, itemstatushistory__isnull=False).count()
person Daniel Roseman    schedule 04.04.2011
comment
проблема в том, что элемент может иметь много статусов. Я хочу считать только последний статус. Так, например, если элемент имеет два статуса, называемых in и collected. Нужно просто подсчитывать только собранный статус. - person Shehzad009; 04.04.2011
comment
Да, это то, что я имею в виду. На самом деле вы вообще не хотите подсчитывать статусы, вы хотите подсчитывать элементы, которые имеют хотя бы один статус. Это то, что делает приведенный выше код. - person Daniel Roseman; 04.04.2011
comment
О, я вижу проблему. Что я имел в виду под подсчитать последний статус. Это означает, что для каждого элемента с более чем одним статусом сохраните один. Я думаю, что это может быть решено, если в вашем ответе есть отдельная функция. - person Shehzad009; 04.04.2011