Django Tempus Dominus:设置格式会使表单无效

Posted

技术标签:

【中文标题】Django Tempus Dominus:设置格式会使表单无效【英文标题】:Django Tempus Dominus: setting a format makes the form invalid 【发布时间】:2021-12-25 09:22:06 【问题描述】:

我有一个非常简单的表格来提交日期。默认情况下,日期格式为 'yyyy-MM-dd' 并且表单有效。但是,一旦我将格式更改为任何内容(我尝试了 False 和“LL”),我就会在提交时收到一条错误消息:“输入有效日期”。所以看起来在提交时使用了默认格式,而不是我设置的格式。如何让首选格式正常工作?

这是表格:

class DateForm(forms.Form):
    date_field = forms.DateField(
        required=True,
        label='The Date',
        widget=DatePicker(
            options=
                'minDate': '1900-01-01',
                'maxDate': '2050-12-31',
                'format': 'LL',
            ,
        ),
        initial='2001-01-01',
    )

这是视图:

def date_input(request):
    if request.method == 'POST':
        form = DateForm(request.POST)
        if form.is_valid():
            the_date = form.cleaned_data['date_field']
            print(the_date)
    else:
        form = DateForm()
    return render(request, 'calculators/date-input.html', 
        'form': form,
    )

【问题讨论】:

【参考方案1】:

解决方案似乎是在包含小部件上指定格式的字段上使用input_formats。在我的例子中,我在小部件上使用了'MMM D, YYYY'input_formats=['%b %d, %Y']

【讨论】:

以上是关于Django Tempus Dominus:设置格式会使表单无效的主要内容,如果未能解决你的问题,请参考以下文章

如何加载带有requirejs的Tempus Dominus Bootstrap 4(在Moodle中)? (错误:没有为datetimepicker定义调用)

django 预填表格

Django模板:字典键的值,其中有空格

使用 BeautifulSoup 写入文件时在 Django 模板中保留空格

如何在Django中接收JSON格式的数据

如何为列0单元格django模板添加超链接