Django form.as_p DateField没有将输入类型显示为日期

时间:2014-04-03 18:34:10

标签: python django django-forms

使用我的第一个django应用程序,我有一个定义了一些DateFields的模型,然后是该模型的ModelForm,即

models.py

class MyModel(models.Model):
    ...
    my_date = models.DateField('my date')
    ...

class MyModelForm(ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'

views.py

def show(request):
    form = MyModelForm
    template_name = 'myapp/show.html'
    return render(request,template_name,{'form':form})

然后在我的html中我使用.as_p让django为我呈现表单

<form action="/show/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>

但是DateFields有输入类型文本,而不是日期。有没有办法改变这个?

7 个答案:

答案 0 :(得分:20)

您可以创建自定义小部件:

from django import forms

class DateInput(forms.DateInput):
    input_type = 'date'

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'
        widgets = {
            'my_date': DateInput()
        }

答案 1 :(得分:17)

没有必要继承DateInput

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'
        widgets = {
            'my_date': DateInput(attrs={'type': 'date'})
        }

答案 2 :(得分:2)

使用django-widget-tweaks软件包,您可以通过使用以下方式完成此操作:

{% load widget_tweaks %}
{{form.date|attr:"type:date"}}

并在该课程中将该字段设为日期时间字段:

date = forms.DateField()

答案 3 :(得分:1)

start_date = forms.DateField(widget=forms.DateInput(attrs={'type': 'date'}))

答案 4 :(得分:0)

编译代码时出现错误。最好使用这个:

从Django导入表格中

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'
        widgets = {
            'my_date': forms.DateInput(attrs={'type': 'date'})
        }

答案 5 :(得分:0)

直接在form.Form

中使用
class DateInput(forms.DateInput):
input_type = 'date'

class Gym(forms.Form):
    starting_date = forms.DateField(widget = DateInput)

答案 6 :(得分:-1)

安装

  • 运行pip install django-datetimepicker
  • 'datetimepicker'添加到您的INSTALLED_APPS

基本用法

这里是如何使用小部件的示例。

。将DateTimePicker分配给DateTimeFieldDateFieldTimeField

“”“” python“”“

从Django导入表格中

从datetimepicker.widgets导入DateTimePicker

SampleForm(forms.Form)类:

datetime = forms.DateTimeField( widget = DateTimePicker(), )