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

Django PostgreSQL中动态指定键查询JSONField的方法

解决Django JSONField动态键查询的问题

这问题我做项目时也踩过同款坑!Django ORM的查询语法里,data__Salary__gte这种写法是把Salary当成固定的JSON键来解析的,直接把变量keyValue写进去的话,ORM会误以为你要找data里名为keyValue的键,自然查不到结果。

这里有个简单且靠谱的解决方法——用字典构造动态查询参数,具体代码如下:

# 用户传入的动态键和阈值
key_value = 'Salary'
salary_threshold = 15000

# 用f-string拼接出正确的查询键,构造字典
query_params = {f'data__{key_value}__gte': salary_threshold}

# 用**解包字典作为filter的关键字参数
matching_records = TableName.objects.filter(**query_params)

原理很直观:通过f-string把动态的键名拼接到查询条件字符串里,再把这个字符串作为字典的key,最后用**把字典拆成filter能识别的关键字参数。这样Django就会正确解析成data__Salary__gte=15000,完全贴合你的需求。

如果需要扩展多个动态条件,也可以用同样的方式往字典里加键值对,比如同时查询年龄:

query_params = {
    f'data__{key_value1}__gte': threshold1,
    f'data__{key_value2}__lte': threshold2
}
results = TableName.objects.filter(**query_params)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:52:21