您好,我似乎遇到了一些涉及Django计数的问题。我有一个仅显示其最新状态的项目列表。所有这些状态为“已销毁”的项目都已删除。这打印得很好。
status_items = models.StorageItem.objects.filter(client=client_id, itemstatushistory__isnull=False).distinct()
{% for item in status_items %}
{{item.itemstatushistory_set.latest|cut:"Destroyed"}}
{% endfor %}
但我不能指望某些原因。
status_items = models.StorageItem.objects.filter(client=client_id, itemstatushistory__isnull=False).distinct().count()
TypeError while rendering: 'int' object is not iterable
答案 0 :(得分:2)
后
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()
。更多信息:rendering-a-context
@ 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 }}
答案 1 :(得分:0)
status_items = models.StorageItem.objects.filter(client=client_id, itemstatushistory__isnull=False).distinct().count()
{% for item in status_items %}
{{item.itemstatushistory_set.latest|cut:"Destroyed"}}
{% endfor %}
您已将status_items
设置为整数,因此您无法执行for item in status_items
。
你想要达到什么目标?
答案 2 :(得分:0)
你在哪个版本的Django上?
也许你可以考虑使用如聚合和其他QuerySet子句下所述的注释语法:
http://docs.djangoproject.com/en/dev/topics/db/aggregation/#aggregations-and-other-queryset-clauses