You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询指定external_id且timestamp最高的Transaction对象并解决aggregate报错

错误原因

QuerySet.aggregate() 方法仅接受聚合函数表达式作为入参,你直接将筛选条件传入了aggregate(),不属于可识别的聚合表达式,因此抛出类型错误。筛选逻辑需要前置到filter()方法中执行。

实现方案

方案1:仅需要获取符合条件的最高timestamp值

先过滤external_id=1的数据集,再做聚合查询:

highest_timestamp = Transaction.objects.filter(external_id=1).aggregate(highest_timestamp=Max('timestamp'))["highest_timestamp"]

方案2:需要获取完整的最高timestamp对应的Transaction对象

更高效的写法是过滤后按timestamp倒序排序,取第一条即可:

# 拿到符合条件的、timestamp最大的单条交易对象
max_transaction = Transaction.objects.filter(external_id=1).order_by("-timestamp").first()

如果存在多条记录timestamp同为最大值的场景,可以先查最大时间再匹配查询:

# 先查询最大时间戳
max_ts = Transaction.objects.filter(external_id=1).aggregate(max_ts=Max("timestamp"))["max_ts"]
# 拿到所有符合条件、时间戳等于最大值的交易对象列表
max_transaction_list = Transaction.objects.filter(external_id=1, timestamp=max_ts)

内容的提问来源于stack exchange,提问作者Anjayluh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:54:00