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

如何在Django ORM中使用PostgreSQL ARRAY构建目标字典映射

使用Django ORM实现PostgreSQL数组列合并并生成字典映射

对应你给出的PostgreSQL SQL语句,要通过Django ORM直接生成目标字典(无需Python循环处理),可以按以下步骤实现:

1. 自定义PostgreSQL数组构造函数

Django ORM没有内置直接生成PostgreSQL数组的函数,我们可以通过继承Func类自定义一个:

from django.db.models import Func, F

class Array(Func):
    function = 'ARRAY'
    template = "%(function)s[%(expressions)s]"

2. 执行查询并生成字典

利用annotate添加数组字段,再通过values_list配合dict()直接转换为目标格式:

# 假设你的模型类名为User
result = dict(User.objects.annotate(
    address_array=Array(F('address'), F('zip'))
).values_list('id', 'address_array'))

说明

  • 上述代码会生成与目标SQL等价的查询,Array类会构造出ARRAY[address, zip]的SQL片段。
  • values_list('id', 'address_array')返回包含(id, 数组)的元组迭代器,直接用dict()转换就能得到以id为键、地址邮编数组为值的字典,完全不需要手动循环处理查询集。
  • 该实现仅适配PostgreSQL数据库,因为ARRAY是PostgreSQL的专属语法。

内容的提问来源于stack exchange,提问作者Don Bhrayan Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 09:39:54