Django过去三十天添加了数字

时间:2010-08-14 04:43:16

标签: django django-queryset

使用这样的模型:

class User(models.Model):
    entered = models.DateTimeField(auto_now_add=True)

如何获取统计数据,以便显示过去30天内最近添加的用户数,并在当天添加了用户数。

示例:

2010-08-02: 220
2010-08-08: 1220
2010-08-14: 20

1 个答案:

答案 0 :(得分:3)

<强>更新

这个答案没用。由于enteredDateTimeField,查询最终会为entered的每个值计数1。这不是OP想要的。 (谢谢dannyroa

entered的类型更改为DateField应该会有所帮助。

原始答案

您可以使用Django的aggregation功能执行此操作。像这样:

from django.db.models import Count
q = User.objects.annotate(Count('entered')).order_by('-entered')
for user in q[0:30]:
    print "%s %s" % (user.entered, user.entered__count)

<强>更新

您可以对查询集进行切片,然后将其传递给模板。

# View 
def my_view(*args, **kwargs):
    queryset = User.objects.annotate(Count('entered')).order_by('-entered')
    context = dict(queryset = queryset[0:30])
    return render_to_response('my_template.html', context_instance = RequestContext(request, context))    

# Template
{% for user in queryset %}
    <td>{{ user.entered }}</td>
    <td>{{ user.entered_count }}</td>
{% endfor %}