You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:00:07