如何去除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
相关产品推荐
相关产品推荐

