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

如何将指定SQL查询转换为Django ORM语句?

对应的Django ORM写法

先假设你的Django模型对应数据库表dbp_istasyondata,模型名为DbpIstasyonData(如果你的模型名不同,替换成实际名称即可),可以这样实现你的SQL逻辑:

from django.db.models import Func, Value

queryset = DbpIstasyonData.objects.values('datetime').annotate(
    parameters=Func(
        Func(
            Func(Value('parameter'), 'raw', function='json_build_object'),
            function='array_agg'
        ),
        function='array_to_json'
    )
).order_by('datetime')

代码说明:

  • values('datetime'):对应SQL中的group by datetime,指定按datetime字段分组
  • 嵌套的Func依次对应SQL里的函数调用:
    • 最内层Func(Value('parameter'), 'raw', function='json_build_object'):调用PostgreSQL的json_build_object函数,将字段parameter和raw组合成JSON对象
    • 中间层Func(..., function='array_agg'):对每组生成的JSON对象执行array_agg聚合操作,得到对象数组
    • 最外层Func(..., function='array_to_json'):把聚合后的数组转换为JSON格式,对应SQL中的array_to_json
  • order_by('datetime'):对应SQL的order by 1,按datetime字段排序

如果需要直接获取包含datetime和parameters的字典列表,可以使用queryset.values('datetime', 'parameters'),或者直接遍历queryset获取每条结果。

内容的提问来源于stack exchange,提问作者Fırat Badur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:35:29