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

Django问题:过滤表单字段查询集时出现CreationForm无get属性错误

解决CreationForm 'has no attribute 'get''错误

错误根源

你的CreationForm类重写__init__方法时,调用父类构造函数错误传递了self参数,导致表单实例初始化逻辑异常,触发了'CreationForm' object has no attribute 'get'错误。

修复表单代码

将表单的__init__方法中父类构造调用的多余self参数移除:

class CreationForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        # 移除多余的self参数,正确调用父类构造
        super(CreationForm, self).__init__(*args, **kwargs)
        self.fields["contest"].queryset = Contest.objects.filter(active=True)

    class Meta:
        ...  # 你的模型及字段定义

视图代码优化(可选)

原视图中直接给form.user赋值的方式无法正确关联到模型实例,建议改用commit=False的方式处理用户关联:

def Creation(request):
    user = request.user if request.user.is_authenticated else None

    if request.method == "POST":
        form = CreationForm(request.POST)
        if form.is_valid():
            # 先创建未提交的模型实例
            sheet = form.save(commit=False)
            if user:
                sheet.user = user
            # 保存最终实例
            sheet.save()
            return redirect("sheet_detail", pk=sheet.id)

    initial = {'user': user} if user else {}
    form = CreationForm(initial=initial)
    return render(request, "jde/creation_form.html", context={"form": form})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:11:16