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

Django Tempus Dominus设置自定义日期格式后表单验证失效如何解决

报错原因

你在DatePicker的options中配置的format仅作用于前端日期选择器的显示和提交格式,Django后端的forms.DateField默认仅识别%Y-%m-%d等预设的日期格式,未匹配到你自定义的格式时就会抛出Enter a valid date的校验错误。

解决方法

给DateField添加input_formats参数,将前端提交的日期对应的Django格式加入校验列表即可,修改后的表单代码如下:

from django import forms
# 多语言适配场景可导入以下工具
# from django.utils.formats import get_format_lazy

class DateForm(forms.Form):
    date_field = forms.DateField(
        required=True,
        label='The Date',
        # 新增input_formats配置,按你的实际前端输出格式填写
        # 中文环境下moment.js的LL格式对应 %Y年%m月%d日,可保留默认格式做兼容
        input_formats=['%Y年%m月%d日', '%Y-%m-%d'],
        # 多语言场景可替换为自动读取本地化格式:
        # input_formats=get_format_lazy('DATE_INPUT_FORMATS'),
        widget=DatePicker(
            options={
                'minDate': '1900-01-01',
                'maxDate': '2050-12-31',
                'format': 'LL',
            },
        ),
        initial='2001-01-01',
    )

如果配置format=False,前端会输出浏览器默认的日期格式,你只需将对应格式也加入input_formats列表即可正常校验。

内容的提问来源于stack exchange,提问作者Sundraw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:15:03