после
status_items = models.StorageItem.objects
.filter(client=client_id, itemstatushistory__isnull=False)
.distinct().count()
status_items
будет содержать количество элементов -> int
объект
, использующий его в шаблоне в {% for item in status_items %}
, очевидно, выдаст ошибку.
вы можете оставить его без count()
и в шаблоне получить доступ к счетчику следующим образом:
{{ status_items.count }}
Система шаблонов вызовет для вас status_items.count()
.Больше информации здесь: рендеринг-контекст
РЕДАКТИРОВАНИЕ:
@ Shehzad009 : Чего я пытаюсь достичь, состоит в том, чтобы сосчитать все предметы, которые имеют свой последний статус не уничтожен.Из-за отношения «один ко многим» и потому, что я хочу посчитать последние статусы только для каждого элемента, это немного сложно
, вы можете определить status_items
следующим образом:
#storageItems where itemstatushistory__status != 'Destroyed'
storage_items = models.StorageItem.objects
.filter(client=client_id,
itemstatushistory__isnull=False
)
.distinct()
# list of items with latest status != 'Destroyed'
status_items = [item for item in storage_items
if item.itemstatushistory_set.latest().description !='Destroyed']
# list of items with latest status not in ['Destroyed', 'Out']
status_items = [item for item in storage_items
if item.itemstatushistory_set.latest().description
not in ['Destroyed', 'Out']]
затем в шаблоне:
{# show items with latest status != destroyed #}
{% for item in status_items %}
{{ item }}
{% endfor %}
{# items with latest status != destroyed count #}
{{ status_items|length }}