Django AttributeError: 'InterestForm' 对象没有属性 '_errors'



我正在尝试使用Django表单允许Django用户输入他们的三个最喜欢的兴趣。错误发生在模板呈现过程中,它说{{form.as_ul}} .

代码如下:

reg_interests.html

{% block content %}
<br><br>
<h1>Choose the 3 things that interest you most!</h1>
<form method="post" action="/reg_interests/">
    {% csrf_token %}
    {{form.as_ul}}
    <br>
    <p class="submit"><input  class="btn btn-default" type="submit" name="commit" value="Continue"></p>
</form>
{% endblock %}

views.py

def reg_interests_view(request):
    if request.POST:
        form = InterestsForm(request.POST, request=request)
        if form.is_valid():
            form.save(request)
            return redirect('/reg_video/')
    args = {}
    args['form'] = InterestsForm(request=request)
    return render(request, 'login/reg_interests.html', args)

forms.py

class InterestsForm(RequestModelForm):
    interest1 = forms.ChoiceField(choices=[(1, "Option 1"), (2, "Option 2")])
    interest2 = forms.ChoiceField(choices=[(1, "Option 1"), (2, "Option 2")])
    interest3 = forms.ChoiceField(choices=[(1, "Option 1"), (2, "Option 2")])
    class Meta:
        model = Interest
        fields = ('interest1', 'interest2', 'interest3')
    def __init__(self, request):
        self.user = request.user
    def save(self, commit=True):
        interest = super(InterestsForm, self).save(commit=False)
        interest.user = self.user
        interest.interest1 = self.cleaned_data['interest1']
        interest.interest2 = self.cleaned_data['interest2']
        interest.interest3 = self.cleaned_data['interest3']
        if commit:
            interest.save()
        return interest

我认为有一个问题的形式,但我不知道如何或为什么我需要定义_errors。Django本身不应该处理这些吗?

如何定义_errors ?

这段代码根本不可能工作,因为您覆盖了表单的__init__方法,以便a)您只接受request参数-而不是表单期望的任何其他东西,如datainitial -和b)您永远不会调用超类init方法来初始化其余表单代码期望的东西。您需要保留签名并调用super。

def __init__(self, *args, **kwargs):
     request = kwargs.pop('request')
     self.user = request.user
     super(InterestsForm, self).__init__(*args, **kwargs)

相关内容

  • 没有找到相关文章

最新更新