问题描述
我已经在Stackoverflow上搜索了此内容,但找不到答案。
我正在尝试使用易碎的表单和FormHelper渲染ModelForm,以帮助我很好地进行布局。 当我使用Forms.Form库时,一切工作正常。但是现在的主要问题是日期选择器和选择字段不再具有带日期选择器或
的下拉列表这是我的forms.py文件:
CITIES= (("London","London"),("Istanbul","Istanbul"),("Cape Town","Cape Town"))
class EntryForm(forms.ModelForm):
class Meta:
model = Items
itemName = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'item name'}))
...
date = forms.DateField(widget=forms.TextInput(attrs={'type': 'date'}),required=False)
location =forms.ChoiceField(choices=CITIES,required=False)
fields = ['itemName','date','location']
def __init__(self,*args,**kwargs):
super(EntryForm,self).__init__(*args,**kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
'itemName',...
Row(
Column('date',css_class='form-group col-md-6 mb-0'),Column('location',css_class='form-row'
),Submit('submit','Submit')
)
我的模板文件如下:
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block content %}
<h1>Entry Form</h1>
<br>
{% crispy form %}
<br>
{% endblock %}
解决方法
不能100%地确定这是否是问题,但是我认为您可能只需要将字段移至EntryForm类,就像这样:
class EntryForm(forms.ModelForm):
# Fields should go here,not under the Meta class:
itemName = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'item name'}))
...
date = forms.DateField(widget=forms.TextInput(attrs={'type': 'date'}),required=False)
location =forms.ChoiceField(choices=CITIES,required=False)
class Meta:
model = Items
fields = ['itemName','date','location']