首页 > 解决方案 > Django Tempus Dominus:设置格式会使表单无效

问题描述

我有一个非常简单的表格来提交日期。默认情况下,日期格式为 '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,
    })

标签: djangodjango-formsbootstrap-datetimepicker

解决方案


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


推荐阅读