2011-03-11 68 views
1

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

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

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

我已经得到的最接近的是:

{% for account in accounts %} 

    {% for user in users %} 

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

      {{ user.count }} 

     {% endif %} 

    {% endfor %} 

{% endfor %} 

感谢

回答

3

从你的模板,好像用户字段定义是这样的:

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 %} 
+0

没有工作,但谢谢。我不知道这是否应该在视图而不是模板中完成,然后作为上下文传递? – eli 2011-03-11 11:35:01

+0

您的用户帐户字段是否像我建议的那样定义? – crodjer 2011-03-11 11:38:03

+0

是的,帐号是用户的外键。我想统计每个帐户的用户数 – eli 2011-03-11 11:40:31

3

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

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

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

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

感谢您的回复。我试过但得到了一个N​​ameError(全局名称'模型'未定义。) – eli 2011-03-11 11:59:50

+1

将此添加到您的python文件的顶部:'django.db import models' – 2011-03-11 12:47:28