在Django模板中计算对象

时间:2011-03-11 10:59:41

标签: django django-templates

我是Django的新手。我想计算并显示满足模板中条件的对象数。

我有一个用户模型和帐户模型。用户有一个foreignkey字段帐户,该帐户映射到Account对象。

在模板中,我想计算每个帐户的用户数。

我最接近的是:

{% for account in accounts %}

    {% for user in users %}

        {% if equal user.account.id account.id %}

            {{ user.count }}

        {% endif %}

    {% endfor %}

{% endfor %}

由于

2 个答案:

答案 0 :(得分:4)

在您的模板中,似乎用户字段的定义如下:

class User(models.Model):
    .
    .
    account=models.Foreignkey()
    .

如果是这样的话,你可以关注this

{% for account in accounts %}
    Count: {{ account.user_set.count }}
    {% for user in account.user_set.all %}
        {{ user }}
    {% endfor %}
{% endfor %}

答案 1 :(得分:4)

您可以使用视图中的用户计数为您的帐户添加注释。假设用户模型包含account = ForeignKey(Account, related_name='users')

accounts = Account.objects.annotate(user_count=models.Count('users'))

这样你只需要一个查询。然后只需在模板中使用以下内容:

{% for account in accounts %}
    {{ account.user_count }}
{% endfor %}