Django form.as_p DateField未显示为日期输入类型
我正在开发我的第一个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
的输入类型是文本,而不是日期。有没有办法改变这个?
9 个回答
1
forms.py
from django import forms
from .models import MyModel
from django.forms.widgets import DateInput # need to import
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = '__all__'
widgets = {
'my_date': DateInput(attrs={'type': 'date'})
}
5
使用django-widget-tweaks这个工具包,你可以很简单地做到这一点,只需要用:
{% load widget_tweaks %}
{{form.date|attr:"type:date"}}
然后在你的类里把这个字段设置为日期时间字段:
date = forms.DateField()
13
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这就像你从冰箱拿出食材,然后在厨房里做饭一样。
有些时候,我们会遇到一些问题,比如数据的格式不对,或者我们想要的数据没有被正确地获取到。这就像你打开冰箱,想找牛奶,但发现里面只有果汁。
为了避免这些问题,程序员们会使用一些工具和方法来确保数据能够正确地流动和使用。就像在做饭之前,你会先准备好所有的食材,确保一切都在你手边。
总之,处理数据就像做饭一样,需要仔细准备和检查,才能做出美味的菜肴。
start_date = forms.DateField(widget=forms.DateInput(attrs={'type': 'date'}))
53
其实不需要去继承 DateInput
这个类。
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = '__all__'
widgets = {
'my_date': forms.DateInput(attrs={'type': 'date'})
}
63
你可以创建一个自定义的小部件:
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()
}