如何在Django的CreateView类中设置deadline字段的日期选择功能
问题原因
Django 后台默认给 DateField 类型字段内置了日期选择组件,而你当前用的 CreateView 通用视图自动生成的表单,默认给日期字段用的是普通文本输入框,既没有设置 HTML5 原生日期输入类型,也没有绑定日期选择逻辑,所以前端无法正常选择日期。
修复步骤
- 首先在你的应用目录下新建
forms.py文件,自定义表单类并给 deadline 字段指定日期输入组件:
from django import forms from .models import Gig class GigCreateForm(forms.ModelForm): class Meta: model = Gig fields = ['title', 'industry', 'city', 'country', 'gigdescription', 'deadline'] widgets = { # 配置为HTML5原生日期输入框,浏览器会自带日期选择器 'deadline': forms.DateInput(attrs={'type': 'date'}), }
- 修改
views.py中的 GigCreateView 配置,指定使用你自定义的表单类:
from .forms import GigCreateForm class GigCreateView(CreateView): model = Gig template_name = 'gigs/create_gig.html' form_class = GigCreateForm
额外注意事项
- 你当前模板中渲染了
{{form.profession}}字段,但你原配置的表单字段列表里没有包含profession,只有industry,需要对应调整,否则渲染会报错。 - 如果需要和 Django 后台样式一致的日期选择效果,可以自行引入前端日期组件给 deadline 输入框绑定即可。
内容的提问来源于stack exchange,提问作者Liah Cheston
相关产品推荐
相关产品推荐

