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

如何不硬编码字段名执行Django ORM查询

实现方法

直接使用Python原生的字典解包语法**,就能把JSON字典的键值对动态转为Django ORM查询的关键字参数,完全不需要提前硬编码字段名。

代码示例

import json
from .models import AcronymSecurityControlMaster
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned

# 示例原始JSON数据
raw_json_str = '{"postgres_id":"10"}'
# 解析为Python字典
query_dict = json.loads(raw_json_str)

# 可选步骤:对查询值做类型转换,适配模型字段类型(比如示例中字符串格式的数字转整型)
processed_query = {}
for k, v in query_dict.items():
    if isinstance(v, str) and v.isdigit():
        processed_query[k] = int(v)
    else:
        processed_query[k] = v

# 动态查询
try:
    result = AcronymSecurityControlMaster.objects.get(**processed_query)
except ObjectDoesNotExist:
    # 自行处理无匹配数据的逻辑
    result = None
except MultipleObjectsReturned:
    # 自行处理匹配到多条数据的逻辑
    result = None

额外注意点

  • 可以提前校验JSON的键是否属于对应模型的合法字段,避免传入不存在的字段触发ORM报错
  • 多条件查询也完全兼容,只要JSON里写入多个键值对,解包后会自动拼接为AND查询条件

内容的提问来源于stack exchange,提问作者Mad's Man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:06:05