我有一个表单(2 个字段),用户使用 jQuery 的 DatePicker 和 TimePicker 选择/输入日期和时间。出来的格式是:
01/05/2011
11:00 PM
表单不会提交,所以我认为这些格式与我在表单类中使用的 DateField 和 TimeField 存在冲突。这是真的?如果是这样,这些输入需要采用什么格式?
谢谢!
我有一个表单(2 个字段),用户使用 jQuery 的 DatePicker 和 TimePicker 选择/输入日期和时间。出来的格式是:
01/05/2011
11:00 PM
表单不会提交,所以我认为这些格式与我在表单类中使用的 DateField 和 TimeField 存在冲突。这是真的?如果是这样,这些输入需要采用什么格式?
谢谢!
您可以通过查看 Django 源代码来阅读这些字段的验证代码。
查看 django/forms/fields.py,阅读 DateField 和 TimeField 类的 to_python() 方法。
在我看来,它们都支持多种输入类型:
我认为最后一个选项是你想要的。查看 django/conf/global_settings.py,可以看到这些设置的默认值,其中包括大范围的 strptime 格式字符串。这是默认的 DATE_INPUT_FORMATS:
'%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
'%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
'%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
'%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
'%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
因此,任何以这些方式格式化的日期字符串都应该可以工作(假设您的语言环境没有设置为古怪的东西——每个语言环境都有针对该字段的特定于语言环境的覆盖,并且您应该检查您正在工作的语言环境的语言环境子目录和)。
TIME_INPUT_FORMATS 有类似的逻辑,默认情况下是:
'%H:%M:%S', # '14:30:59'
'%H:%M', # '14:30'
所以我怀疑这是阻止你的表格工作的原因,因为你的时间有上午/下午。
您可以在 settings.py 中手动将 TIME_INPUT_FORMATS 设置为 strptime 格式字符串,该字符串适用于您想要的,可能类似于 "%I:%M %p" (请注意,您不能只使用 %r,因为看起来需要几秒钟)。您可能还想包含原始值,只是为了与其他事物(如 Django 管理界面)兼容。
我对 jQuery 日期和时间选择器不太熟悉——也许您可以将它们配置为以 Django 已经支持的格式输出时间?
我有这个设置运行良好只是使用
LANGUAGE_CODE = 'fr-FR'
在我的 settings.py 并使用 jQueryUI 的语言文件
这个页面有一个 jqueryUI 语言文件的完整示例