python - Django ORM不同的值按确定的日期有一个MySQL DB
问题描述
我想用 Django 读取一些数据库日志,但我遇到了问题。
我的目标是计算过去 7 天内每天有多少用户发出请求。
我试过这个
logs_seven_days = Log.objects.filter( created_at__gte=datetime.now()-timedelta(days=7))\
.extra({'date_of_request' : "date(created_at)"}) \
.values('date_of_request') \
.values('api_key__name') \
.distinct() \
.annotate(request_of_this_date_count=Count('id'))
我想要这样的东西:
distinct_user_requests date
4 2/21/2020
21 2/22/2020
5 2/23/2020
0 2/24/2020
43 2/25/2020
22 2/26/2020
解决方案
您可以使用以下查询
logs_seven_days = Log.objects.filter(
created_at__gte = timezone.now()-timedelta(days=7) #Filter Records
).annotate(
date_of_request = TruncDate('created_at') #Annotate to trunc created_at to only date part
).values(
'date_of_request' #Force to group by date truncated created_at_date
).annotate(
distinct_user_requests = Count('user',distinct=True) #Use aggregate Count function over 'user' field using distinct.
).values(
'distinct_user_requests','date_of_request' #Get only count and create date values
).order_by(
'date_of_request' #And you may also order by annotated field value
)
请参阅Django 文档了解更多信息。
推荐阅读
- angular - 防止 HttpClient 在 PUT、POST 和 PATCH 上读取 cookie
- sql - 获取特定 ID 的正确数据
- kubernetes - Kubernetes 删除 statefulset 会删除 pod,尽管 cascade=false
- php - 如何使用 Symfony QueryBuilder 仅检索实体 ID?
- image - 如何为多个图形制作 SVG 精灵图像?
- reactjs - React redux 表单字段数组单元测试失败
- java - 未找到模块:如何使用模块编译 JDK 10 Eclipse Maven 项目?
- javascript - json 的 Chrome 控制台输出有奇怪的行为
- sql - 如何使视图可以从 oracle 中的另一个模式访问
- hex - 为质量通知创建 HEX 附件