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

如何去除JSON响应中的<QuerySet[]>标识?Django代码优化求助

解决Django QuerySet转JSON时的<QuerySet[]>标识问题

嘿,我来帮你搞定这个问题!你现在碰到的情况,是因为直接把QuerySet转成字符串时,它会输出Django默认的QuerySet字符串格式,也就是带着<QuerySet [...]>这些标识。咱们只需要把QuerySet里的ID单独提取出来,拼接成纯逗号分隔的字符串就行。

问题根源

values_list('id', flat=True)返回的是一个QuerySet对象,直接用str(ids)会调用它的默认字符串方法,所以才会出现<QuerySet [dafa1, lnvq2]>这种格式,而不是你想要的纯ID列表。

解决方案

我们可以直接遍历QuerySet里的每个ID,用逗号把它们拼接成字符串。如果你的ID是字符串类型,直接用join就行;如果是整数类型,记得先转成字符串避免报错:

修改后的完整代码

from upload.models import Images
from django.http import JsonResponse

def list(request):
    ids = Images.objects.filter(allowed=True).values_list('id', flat=True)
    # 拼接ID为逗号分隔的字符串(整数ID需先转成字符串)
    id_string = ', '.join(str(id) for id in ids)
    data = { 'ids': id_string, }
    return JsonResponse(data)

为什么这样有效?

  • values_list(flat=True)返回的QuerySet是可迭代对象,我们能逐个取出里面的真实ID值
  • ', '.join(...)会把所有ID用逗号加空格连接成一个纯字符串,完全去掉了QuerySet自带的标识

这样返回的JSON就会是你期望的格式:{"ids": "dafa1, lnvq2"}啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:27:35