使用我的第一个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
有输入类型文本,而不是日期。有没有办法改变这个?
答案 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
分配给DateTimeField
,DateField
或TimeField
。
“”“” python“”“
从Django导入表格中
从datetimepicker.widgets导入DateTimePicker
SampleForm(forms.Form)类:
datetime = forms.DateTimeField( widget = DateTimePicker(), )