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

Django使用values_list如何排除None值?FieldError报错解决

问题解决:Django排除values_list中的None值并修复FieldError

错误原因

你遇到的FieldError是因为exclude(filed=None)里的filed被Django当作固定字段名解析,但你的模型中并没有名为filed的字段。这里需要把函数参数filed作为动态字段名传入查询条件,而非直接写死成字符串。

正确解决方案

推荐在数据库层面直接排除None值,性能更优,写法如下:

def gen_choice(filed):
    # 用字典解包传递动态字段条件
    return list(Mymodel.objects.exclude(**{filed: None}).values_list(filed, flat=True).distinct())

另一种Python层面过滤的方式(不推荐)

如果不想修改数据库查询逻辑,也可以在获取结果后用列表推导式过滤,但这种方式会先从数据库取出所有值(包括None),再在Python层面筛选,数据量大时性能较差:

def gen_choice(filed):
    queryset = Mymodel.objects.values_list(filed, flat=True).distinct()
    return [item for item in queryset if item is not None]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:21:30