django - 在 Django 中注释和 .get()
问题描述
在我的数据库中,我有一张表卡链接到表金额,一张卡可以有很多金额。
因此,使用 django,我尝试获取特定卡并汇总所有链接金额的总和。但不可能将 .get() 和 .annotate 连接在一起。
我试过这个:
last_year_amount = Card.objects.get(date__date=date(today.year - 1,
today.month, today.day)).annotate(total=Sum(Amount.amount))
但它当然会引发错误''Card'对象没有属性'annotate''。我知道 .get() 返回一个对象而不是 QuerySet 所以 .annotate 不作为该对象的方法存在。
但是如何通过注释获得这个对象呢?
感谢您的回答
解决方案
annotate
交换和的顺序get
。
last_year_amount = Card.objects\
.annotate(total=Sum('amount'))\
.get(date__date=date(today.year - 1, today.month, today.day))
您也可以使用filter()
.
last_year_amount = Card.objects\
.filter(date__date=date(today.year - 1, today.month, today.day))\
.annotate(total=Sum('amount'))\
.get()
如果查询集不完全包含一项,则不带参数的 finalget()
将引发异常。
推荐阅读
- apache-spark - awaitTermination 后如何获取流式查询的进度?
- android - 在具有不同工具栏的屏幕之间使用 Jetpack 的导航
- c# - 如何在 Angular 上创建下载文件服务?
- azure - 使用 powershell 覆盖 ftp 文件
- php - 当我编辑然后更新它时如何按 id 显示选择选项?
- android - packageInfo.requestedPermissions 返回不正确的权限
- mysql - 基于联接从多个表中检索数据时出错
- python - 如何从python传递kwargs以更新sql中的多个列
- firebase - 如何为 Firebase Cloud 消息添加 Google API 控制台创建的 API 密钥
- r - 以 png 格式导出使用 rworldmap 创建的地图