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

如何获取Django QuerySet的原始值?解决返回数组问题

解决Django模板中显示QuerySet而非原始值的问题

核心原因

你的funcionarios_nome方法返回的是QuerySet对象(Django的查询集合),模板直接输出时会显示其默认的字符串格式,也就是你看到的<QuerySet [<Funcionarios: Alberto Santos>]>。要拿到原始的名字值,需要针对QuerySet的结果数量做不同处理。


解决方案

1. 当查询结果唯一时(仅一个匹配对象)

方式一:在视图中返回单个对象

把filter()换成get(),直接返回单个模型实例(注意:get()如果没找到或找到多个会抛出异常,确保你的过滤条件能唯一匹配):

class ListaFuncionariosView(ListView):
    def funcionarios_nome(self):
        # 替换成你的实际过滤条件
        return Funcionarios.objects.get(id=1)

模板中直接调用对象的名字字段(假设模型中名字字段为nome):

{{ view.funcionarios_nome.nome }}

方式二:保留QuerySet,在模板中取第一个元素

如果坚持用filter(),可以在模板中直接取QuerySet的第一个元素的字段:

{{ view.funcionarios_nome.first.nome }}

2. 当查询结果有多个时

需要用for循环遍历QuerySet,逐个输出名字:

{% for funcionario in view.funcionarios_nome %}
    {{ funcionario.nome }}
{% endfor %}

关于.values()的正确用法

.values()返回的是包含字典的QuerySet,比如Funcionarios.objects.filter(...).values('nome')会得到类似<QuerySet [{'nome': 'Alberto Santos'}, ...]>的结果。使用时同样需要遍历或取单个元素的键:

<!-- 单个结果时 -->
{{ view.funcionarios_nome.first.nome }}

<!-- 多个结果时 -->
{% for item in view.funcionarios_nome %}
    {{ item.nome }}
{% endfor %}

一般来说,直接使用模型实例(不用.values())会更直观,除非你只需要模型的部分字段数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:01:12