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

Django-filter ChoiceFilter无法识别已存在模型字段报错如何解决?

问题原因

报错的核心原因是 StartUpViewSet 中的 filterset_fields 参数赋值错误:你传入的是字符串 'status',而 django-filter 要求该参数必须是列表/元组类型,用来指定需要开放筛选的字段。
字符串本质是可迭代对象,程序拿到字符串'status'时会逐字符遍历,把每个字符都当成独立的筛选字段名,最终识别出s、t、a、u这些不存在于模型中的字段,触发报错。

解决方案

根据你的使用场景二选一即可:

  • 场景1:不需要自定义ChoiceFilter,直接用默认的字段筛选逻辑
    把filterset_fields的赋值改成列表/元组格式:
    filterset_fields = ['status']
    # 或者用元组写法,注意末尾的逗号不能丢
    filterset_fields = ('status',)
    
  • 场景2:要使用你已经定义好的StartupFilter自定义筛选类
    删掉原来的filterset_fields配置,换成指定自定义过滤类的参数:
    # 替换原来的 filterset_fields = 'status'
    filterset_class = StartupFilter
    

注意:不要同时配置filterset_fields和filterset_class,二者同时存在时filterset_fields会覆盖自定义过滤类的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:36:08