Python forms.py中的多个表单

Python forms.py中的多个表单,python,django,python-3.x,Python,Django,Python 3.x,这是一个Django项目 forms.py class BigForm(forms.Form): template = forms.CharField(label='Template', widget=forms.Select(choices=CHOICES)) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHel

这是一个Django项目

forms.py

class BigForm(forms.Form):
    template = forms.CharField(label='Template', widget=forms.Select(choices=CHOICES))

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.helper = FormHelper
        self.helper.form_method = 'post'
        self.helper.layout = Layout(
            Field('template'),
            Submit('submit', 'Submit', css_class='btn-success')
    )


class DateForm(forms.Form):
    start_date = forms.CharField(label='Start date')
    end_date = forms.CharField(label='End date')

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.helper = FormHelper
        self.helper.form_method = 'post'
        self.helper.layout = Layout(
            Field('start_date', css_class='form-control'),
            Field('end_date', css_class='form-control')
        )
def myForm(request):
    main_form = BigForm()
    date_form = DateForm()
    return render(request, 'polls/main.html', {'main_form': main_form, 'date_form': date_form})
视图.py

class BigForm(forms.Form):
    template = forms.CharField(label='Template', widget=forms.Select(choices=CHOICES))

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.helper = FormHelper
        self.helper.form_method = 'post'
        self.helper.layout = Layout(
            Field('template'),
            Submit('submit', 'Submit', css_class='btn-success')
    )


class DateForm(forms.Form):
    start_date = forms.CharField(label='Start date')
    end_date = forms.CharField(label='End date')

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.helper = FormHelper
        self.helper.form_method = 'post'
        self.helper.layout = Layout(
            Field('start_date', css_class='form-control'),
            Field('end_date', css_class='form-control')
        )
def myForm(request):
    main_form = BigForm()
    date_form = DateForm()
    return render(request, 'polls/main.html', {'main_form': main_form, 'date_form': date_form})
这有什么问题吗?我一直在 KeyError:“在“BigForm”中找不到键“end_date”。选项为:template。”


我只需要两个单独的表单类(用于两个单独的表单)

您没有将
end\u date
声明为
BigForm
中的字段。它存在于
DateForm

您使用的是crisply Forms我使用的是crisply Forms它有效吗?批准回答不,我仍然看到错误消息。但没关系,我会试着问一个不同的问题。也许我的代码/表单设计是错误的。您应该显示整个回溯,因为不清楚该错误是在哪一行产生的。我不相信在这里显示的任何代码行上都会发生此错误。为什么我必须以BigForm声明end_date?我只想在DateForm中使用它您确实在
DateForm
中声明了
end\u date
,但是根据您在问题中发布的错误,您在
BigForm
中查找
end\u date
,得到了一个
关键错误。发布错误消息的整个回溯,以便我们能够准确地看到问题所在。