如何修改Django日期选择器中datetime字段的显示格式?
嘿,这个问题我之前做项目时也碰到过!Django默认的日期字段在编辑状态下确实会显示成这种截断的短格式,咱们可以从几个简单的方向来调整,完全不用改太多代码:
方法1:在表单类里直接指定显示格式
虽然你没在forms.py里加样式类,但可以给close_date的widget加上format参数,既搞定格式又能顺便加样式(如果需要的话):
# forms.py from django import forms from .models import 你的模型类名 class 你的表单类名(forms.ModelForm): class Meta: model = 你的模型类名 fields = ['close_date', ...] # 其他字段 widgets = { # 这里的%Y-%m-%d是年-月-日格式,你可以换成自己要的 'close_date': forms.DateInput(format='%Y-%m-%d', attrs={'class': '你的样式类'}), }
要是你想完全靠django-widget-tweaks加样式,把attrs里的class删掉就行,只保留format参数。
方法2:用django-widget-tweaks在模板里动态设置
如果不想碰forms.py,只想在模板层面搞定,直接用widget-tweaks的render_field标签加格式参数就行:
<!-- 你的模板文件 --> {% load widget_tweaks %} <form method="post"> {% csrf_token %} <div class="form-group"> {{ form.close_date.label_tag }} <!-- 这里的format换成你要的格式,比如%d/%m/%Y是日/月/年 --> {% render_field form.close_date format="%Y-%m-%d" class="你的样式类" %} </div> <!-- 其他表单字段 --> <button type="submit">保存</button> </form>
这样既设置了显示格式,又通过class参数加了样式,完美契合你的需求。
补充:日期格式符说明
给你列几个常用的格式符,方便你自定义:
%Y:4位完整年份(比如2018)%m:2位月份(01-12)%d:2位日期(01-31)%b:缩写月份名(Jan、Feb)%B:完整月份名(January、February)
额外提醒:如果用前端日期选择器
要是你还搭配了前端日期选择器(比如Bootstrap Datepicker),记得把插件的格式和Django这边设置的保持一致,不然可能会出现显示和选择不匹配的问题:
// 举个Bootstrap Datepicker的例子 $('.你的样式类').datepicker({ format: 'yyyy-mm-dd', // 和Django的format参数对应 autoclose: true });
放心,不管用哪种方法,Django都会自动处理格式和数据库存储的转换,不会影响数据保存和读取的。
内容的提问来源于stack exchange,提问作者Di437
相关产品推荐
相关产品推荐

