使用这样的模型:
class User(models.Model):
entered = models.DateTimeField(auto_now_add=True)
如何获取统计数据,以便显示过去30天内最近添加的用户数,并在当天添加了用户数。
示例:
2010-08-02: 220
2010-08-08: 1220
2010-08-14: 20
答案 0 :(得分:3)
<强>更新强>:
这个答案没用。由于entered
是DateTimeField
,查询最终会为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 %}