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

Django CBV中在form_class访问request对象遇参数错误,求解决

问题解决:BaseModelForm 意外收到'request'参数错误

错误原因

你的表单__init__方法中,先调用了super().__init__(*args, **kwargs),此时kwargs里还包含request参数,但BaseModelForm的构造函数并不接受这个额外参数,因此抛出错误。

修正方案

修改表单的__init__方法,先从kwargs中取出request,再调用父类的构造方法:

def __init__(self, *args, **kwargs):
    # 先取出request,再调用父类构造
    request = kwargs.pop('request', None)
    super().__init__(*args, **kwargs)
    # 因为用了LoginRequiredMixin,request.user必然存在,可直接使用
    if request:
        self.fields['tags'].queryset = Tag.objects.filter(user=request.user)

额外说明

  • 由于你的视图继承了LoginRequiredMixin,只有登录用户才能访问,所以request不会是None,request.user也一定有效,这里的if request判断是为了代码健壮性。
  • 视图中的get_form_kwargs写法是正确的,不需要修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:01:00