django - Django Annotate 在某些情况下不起作用
问题描述
我有一个带有注释的 Django 查询集,可以很好地计算年/月,但由于某种原因,另一个模型的相同代码不起作用。
有效的代码:
usages = Usage.objects.all()
usages = usages.annotate(year=ExtractYear('usage_datetime'),
month = ExtractMonth('usage_datetime')).values('year','month').annotate(total=Count('id'))
不起作用的代码(仅计算 1):
events = Event.objects.all()
events = events.annotate(year=ExtractYear('created'),
month = ExtractMonth('created')).values('year','month').annotate(total=Count('id'))
第一个输出:
<QuerySet [{'year': 2020, 'month': 9, 'total': 13}, {'year': 2020, 'month': 8, 'total': 18}, {'year': 2020, “月”:7,“总计”:29},{“年”:2020,“月”:6,“总计”:31},
第二个:
<QuerySet [{'year': 2020, 'month': 8, 'total': 1}, {'year': 2020, 'month': 8, 'total': 1}, {'year': 2020, 'month': 8, 'total': 1}, {'year': 2020, 'month': 8, 'total': 1} 'total': 1}, '...(剩余元素被截断).. .']>
第二个不像第一个那样计数......不确定它可能是什么......因为唯一的区别在于模型,我认为这就是问题,所以这里是我的模型:
模型.py
class Event(models.Model):
name = models.CharField(max_length=255)
created = models.DateTimeField(auto_now_add=True, editable=False)
last_updated = models.DateTimeField(auto_now=True, editable=False)
class Meta:
ordering = ('-created',)
class Usage(models.Model):
name = models.CharField(max_length=255)
usage_datetime = models.DateTimeField(auto_now_add=True)
编辑 这是事件正在执行的查询
SELECT django_datetime_extract('year', "EventTracker_event"."created", 'UTC') AS "year",
django_datetime_extract('month', "EventTracker_event"."created", 'UTC') AS "month",
COUNT("EventTracker_event"."id") AS "total"
FROM "EventTracker_event"
GROUP BY django_datetime_extract('year', "EventTracker_event"."created", 'UTC'),
django_datetime_extract('month', "EventTracker_event"."created", 'UTC'),
"EventTracker_event"."created"
ORDER BY "EventTracker_event"."created" DESC
出于某种原因创建的人正在通过....
解决方案
从模型中删除排序解决了问题
推荐阅读
- javascript - 当我将元素拖放到图像上时,如何使图像不可见?
- c# - MigrationBuilder:InsertData 并取回 ID
- powershell - 将新的 VMware 服务器从模板部署到具有不同存储策略的集群
- mysql - 由参数 SQL 定义的 Select 语句
- python - 在 Python 中按列表中的多个字段排序
- c++ - 在 VS 2019 16.8.5 中使用 Bosma 编译时出错
- excel - 如何在单个excel单元格中创建日期范围
- swiftui - 如何将页脚视图添加到 SwiftUI 中的列表?
- python - 如何将一个包含多个单词的字符串拆分成一个包含一定数量单词的字符串的列表?
- maven - 使用 maven liquibase 比较相同数据库模式的两种状态