Django datetimefield对某些区域设置无效

时间:2015-06-25 10:16:47

标签: python django django-1.7

我没有定义任何日期输入格式,我的表单字段是:

    expiry_date = forms.DateTimeField(widget=SelectDateWidget,
                                      required=False)

我使用的是区域设置en(英文)和zh-hans(简体中文)。

根据PyCharm调试器,两种语言的POST值都相同:

self.request.POST['expiry_date_day'] = u'25'
self.request.POST['expiry_date_month'] = u'9'
self.request.POST['expiry_date_year'] = u'2015'

但是我只在zh-hans中收到错误。

form.clean()方法中,self.cleaned_data['expiry_date']值缺失,因此我猜测它因先前的验证错误而被删除。

固定

我通过在设置中添加以下内容来解决此问题:

DATE_INPUT_FORMATS = ('%Y-%m-%d', '%Y/%m/%d')

然后将其应用于特定的DateTimeField:

expiry_date = forms.DateTimeField(widget=SelectDateWidget,
                                  input_formats=settings.DATE_INPUT_FORMATS,
                                  required=False)

特别需要'%Y-%m-%d'才能让en满意,而'%Y/%m/%d'则允许zh-hanszh-hant正常运作。

我通过在调试器中向下钻取并找出通过DateTimeField.to_python()传递的值来找到这个。

我会将问题保持打开状态,因为我仍然希望了解为什么区域设置的格式不同,以及是否有更明显的方法来确定允许哪些格式什么时候我不认为解决方案应该是逐步通过调试器,直到找到代码行为止!"

0 个答案:

没有答案