首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django -模板中的呈现日期字段

Django -模板中的呈现日期字段
EN

Stack Overflow用户
提问于 2016-07-29 18:10:28
回答 3查看 3.9K关注 0票数 0

我正在写一张用来存储学生数据的表格。当我试图呈现表单时,它会生成一个文本输入而不是数据。

如何使用django呈现日期输入

forms.py

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
{{form.dob}}
{{form.dob.error}}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-29 18:17:50

默认情况下,Django将显示TextInput字段,您可以重写窗体以显示DateField

代码语言:javascript
运行
复制
class DateInput(forms.DateInput):
    input_type = 'date'

class StudentRegisterForm(ModelForm):
    class Meta:
        model = StudentRegister
        fields = '__all__'
        widgets = {
            'dob': DateInput()
        }
票数 4
EN

Stack Overflow用户

发布于 2016-07-30 19:27:58

使用SelectDateWidget

代码语言:javascript
运行
复制
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))
票数 0
EN

Stack Overflow用户

发布于 2018-03-03 18:52:43

对弗拉基米尔·达尼洛夫上一次答复的一个小小的修正

代码语言:javascript
运行
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38665070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档