【问题标题】:Django query: Want to count a set in templateDjango查询:想在模板中计算一个集合
【发布时间】:2011-04-04 14:17:34
【问题描述】:

我有一个项目列表,它只显示每个项目的最新状态。我现在要做的是计数。问题是 count 函数只有在 latest 被删除时才能正常工作 - 但是这会给我这样的东西。

item1=1 item2=33 item3=12 item4=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 %}

【问题讨论】:

    标签: python html django count


    【解决方案1】:

    在我看来,您需要的只是所有具有状态的项目的计数 - 而不是与您的项目相关的所有状态的计数。那正确吗?如果是这样,这将做到:

    count = models.StorageItem.objects.filter(client=client_id, itemstatushistory__isnull=False).count()
    

    【讨论】:

    • 问题是一个项目可以有很多状态。我只想计算最新状态。例如,如果一个项目有说 - 两个状态,称为 incollected。它只需要统计收集的状态。
    • 是的,我就是这个意思。您实际上根本不想计算状态,您想计算至少具有一种状态的项目。这就是上面代码的作用。
    • 哦,我明白了问题所在。我所说的 count latest status 是什么意思。这意味着对于具有多个状态的每个项目 - 保持它是一个。我认为如果您的答案中有不同的功能,它可能会得到解决。
    猜你喜欢
    • 2011-07-30
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多