modelForm脆皮formhelper和选项列表日期选择器未显示

问题描述

我已经在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']

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...