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

如何从Django QuerySet提取值,生成普通字符串列表?

解决方法

问题核心是你直接把Django的QuerySet对象添加到了列表里:values_list("x", flat=True)返回的不是普通Python列表,而是一个QuerySet实例,用append()会把整个QuerySet作为列表的单个元素,所以才会出现包含QuerySet对象的结果。

下面两种方法可以快速解决:

方法1:将QuerySet转为普通列表后合并

把QuerySet转成Python原生列表,再合并到目标列表中:

x_list = []
x = SupplierCommunication.objects.filter(supplier=supplier.id).values_list("x", flat=True)
x_list.extend(list(x))  # 也可以用 x_list += list(x)

如果只需要单次查询直接得到目标列表,更简洁的写法:

x_list = list(SupplierCommunication.objects.filter(supplier=supplier.id).values_list("x", flat=True))

方法2:用extend()替代append()

append()是添加单个元素,而extend()会遍历可迭代对象(比如QuerySet),把每个元素逐个加入列表:

x_list = []
x = SupplierCommunication.objects.filter(supplier=supplier.id).values_list("x", flat=True)
x_list.extend(x)

如果你的代码是在循环中多次执行(比如处理多个供应商),每次用extend()代替append(),就能把所有QuerySet中的元素合并成一个普通列表,得到你期望的['no','yes']结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:55:26