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

如何在Django中从PostgreSQL获取含特定select值的行?

如何查询Django模型中JSON字段select值为特定值的行

首先注意你的模型里有个笔误:accoundid应该是accountid,建议修正避免后续问题。

针对你的需求,Django对PostgreSQL的JSONField支持通过**双下划线__**直接访问JSON对象内部的键,实现精准查询,具体方法如下:

1. 获取完整的模型对象

如果需要获取包含所有字段的charts对象,直接用filter过滤:

# 查询dictdata中select值为'bar'的所有行
bar_charts = charts.objects.filter(dictdata__select='bar')

# 遍历结果查看详情
for chart in bar_charts:
    print(chart.id, chart.dictdata)

2. 只获取dictdata字段的字典列表

如果你只需要dictdata字段的数据(和你原来的需求一致),可以结合values方法:

# 注意:values里的字段名不要加空格,你原来的代码里'dictdata '多了个空格,建议修正
bar_data = list(charts.objects.filter(dictdata__select='bar').values('dictdata'))
print(bar_data)

执行后输出示例:

[{'dictdata': {'select': 'bar', 'title': 'some title'}}]

原理说明

Django会把dictdata__select='bar'转换成PostgreSQL支持的JSON查询语法(类似dictdata->>'select' = 'bar'),直接在数据库层面完成过滤,效率比查询所有数据后再在Python里筛选高很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:50:37