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

使用Django ModelMultipleChoiceFilter遇参数错误:__init__需至少2参数(传入3个)

解决__init__() takes at least 2 arguments (3 given)错误

嘿,这个坑我之前也踩过!你的问题根源很明确——没有给ModelMultipleChoiceFilter传入必填的queryset参数。

在django-filter的逻辑里,ModelMultipleChoiceFilter需要明确知道要从哪个模型的查询集中加载可选选项,所以初始化时必须提供queryset参数,否则就会触发这个参数不足的报错。

修正后的代码示例

class MyFilter(FilterSet):
    transcribe_by = django_filters.ModelMultipleChoiceFilter(
        field_name='transcribe_by',  # 注意:新版本django-filter推荐用field_name替代旧的name参数
        label='Transcribed By',
        queryset=User.objects.all()  # 替换成你实际关联的模型查询集,比如Transcriber.objects.all()
    )

额外提示

  1. 如果你用的是较新的django-filter版本,name参数已经被标记为过时,建议改用field_name来指定关联的模型字段,避免后续版本的兼容性问题。
  2. 一定要把queryset的值换成你业务中对应的模型查询集——比如如果transcribe_by关联的是自定义的Transcriber模型,就写成Transcriber.objects.all(),也可以根据需求添加过滤条件(比如Transcriber.objects.filter(is_active=True))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:58:01