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

Django使用Site.objects.filter查询时如何直接获取对应字符串值

Django查询直接获取字符串结果的修改方法
  • 首先明确原理:filter() 方法返回的是 QuerySet 结果集合,不是单个 Site 模型实例,你看到的 <Site: Chicago> 是Django模型默认调用 __str__ 方法输出的格式化内容,对应你 Site 模型中定义的返回字段(Django自带的Site模型默认返回name字段值)。

可用修改方案

方案1:确认记录一定存在时使用,写法最简单

直接用get()代替filter()获取单个实例,再取对应字段即可:

site_name = Site.objects.get(id=received_post_data.get('19282')).name

方案2:兼容记录不存在的场景,避免抛出DoesNotExist异常

先取查询结果的第一条,再判断取值:

site_obj = Site.objects.filter(id=received_post_data.get('19282')).first()
site_name = site_obj.name if site_obj else ''

方案3:性能最优写法,无需加载整个模型实例

用values_list直接查询目标字段,减少数据库IO开销:

site_name = Site.objects.filter(id=received_post_data.get('19282')).values_list('name', flat=True).first() or ''

注意:如果你的Site模型自定义了__str__方法,返回的不是name字段,把上述代码中的name替换成你实际返回的字段名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:54:04