我正在写一张用来存储学生数据的表格。当我试图呈现表单时,它会生成一个文本输入而不是数据。
如何使用django呈现日期输入
forms.py
class StudentRegister(forms.Form):
firstname = forms.CharField(max_length= 50)
lastname = forms.CharField(max_length = 50, required=False)
mail = forms.EmailField(required=False)
dob = forms.DateField()html
{{form.dob}}
{{form.dob.error}}发布于 2016-07-29 18:17:50
默认情况下,Django将显示TextInput字段,您可以重写窗体以显示DateField。
class DateInput(forms.DateInput):
    input_type = 'date'
class StudentRegisterForm(ModelForm):
    class Meta:
        model = StudentRegister
        fields = '__all__'
        widgets = {
            'dob': DateInput()
        }发布于 2016-07-30 19:27:58
from django.forms import SelectDateWidget
# from django.forms.extras.widgets Django < 1.9
from django.utils import timezone
def past_years(ago):
    this_year = timezone.now().year
    return list(range(this_year, this_year - ago - 1))
class StudentRegisterForm(forms.Form):
    ...
    dob = DateField(widget=SelectDateWidget(years=past_years(100))发布于 2018-03-03 18:52:43
对弗拉基米尔·达尼洛夫上一次答复的一个小小的修正
from django.forms import SelectDateWidget
# from django.forms.extras.widgets Django < 1.9
from django.utils import timezone
def past_years(ago):
    this_year = timezone.now().year
    return list(range(this_year-ago-1, this_year)) #<------- Parameters should be inverted here
class StudentRegisterForm(forms.Form):
    dob = DateField(widget=SelectDateWidget(years=past_years(100))https://stackoverflow.com/questions/38665070
复制相似问题