Python forms.py中的多个表单
这是一个Django项目 forms.pyPython 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
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
,得到了一个关键错误。发布错误消息的整个回溯,以便我们能够准确地看到问题所在。