2013-04-05 53 views
4

我需要创建一个报表,我可以获取一年中每个月的值。Django按组计算

models.py

class Ask(models.Model): 
     team = models.CharField(max_length=255) 
     date = models.DateField() 

在球队只有三个可能的值:A,B,C

如何计算每个月多少次加个人的团队?

我想为每年生成一份报告。

回答

3

我建议您将month字段添加到您的模型并在save月通过那里。这是帮助你运行这个命令:

from django.db.models import Count 
Ask.objects.filter(date__year='2013').values('month', 'team').annotate(total=Count('team')) 

另一种方法是使用从日期字段extra参数和提取一个月:

from django.db.models import Count 
Ask.objects.filter(date__year='2013').extra(select={'month': "EXTRACT(month FROM date)"}).values('month', 'team').annotate(Count('team')) 

EXTRACT方法取决于数据库和例如dont`t工作对于EXTRACT,SQLite

+0

+1。 [在SQLite中你必须使用](http://www.sqlite.org/lang_datefunc.html)'STRFTIME(date,“%m”)' – 2013-04-05 08:42:05

+0

工作正常,但只有如何添加到模板才能使它看起来像这样:2013-01球队A = 2,2013-02球队A = 1,2013-03球队A = 7 ...现在我有{'team__count':5,'team':u'A', 'month':3.0} – MalT 2013-04-05 09:11:30

+0

访问模板中的dict值阅读此:http://stackoverflow.com/questions/8000022/django-template-how-to-lookup-a-dictionary-value-with-a-variable – 2013-04-05 09:23:56