Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django接受AM/PM作为表单输入_Python_Django_Forms_Datetime - Fatal编程技术网

Python Django接受AM/PM作为表单输入

Python Django接受AM/PM作为表单输入,python,django,forms,datetime,Python,Django,Forms,Datetime,我试图找出如何在Django中使用DateTime字段接受am/pm作为时间格式,但遇到了一些问题。我在forms.py文件中尝试过这样设置 pickup_date_time_from = DateTimeField(input_formats=["%m/%d/%Y %I:%M %p"]) 使用以下数据: 12/31/2017 02:40 pm 但是,我在提交表单时遇到验证错误: (Hidden field pickup_date_time_from) Enter a valid date/

我试图找出如何在Django中使用DateTime字段接受am/pm作为时间格式,但遇到了一些问题。我在forms.py文件中尝试过这样设置

pickup_date_time_from = DateTimeField(input_formats=["%m/%d/%Y %I:%M %p"])
使用以下数据:

12/31/2017 02:40 pm
但是,我在提交表单时遇到验证错误:

(Hidden field pickup_date_time_from) Enter a valid date/time.
我还尝试在settings.py中设置一个全局变量,因为文档中说明:

DATETIME_INPUT_FORMATS = ['%m/%d/%y %I:%M %p']
如果我在没有am/pm的情况下提交数据,但输出是

2017-12-31 02:40:00+00:00

任何其他选项?

日期时间\u输入\u格式不适用于包含%p的格式。 也不使用
input\u格式
kwarg

作为快速解决方法,您可以在
表单
\uuuu init\uuu
方法中更改
日期字段
输入格式属性。
例如:

class DateTimeForm(forms.Form):
    CUSTOM_FORMAT = '%m/%d/%y %I:%M %p'

    date_input = forms.DateTimeField(widget=forms.HiddenInput)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        if self.CUSTOM_FORMAT not in self.fields['date_input'].input_formats:
            self.fields['date_input'].input_formats.append(self.CUSTOM_FORMAT)
Django文档确实指出%p不能用于分析日期字段


但是如果你通过了,DateTimeField的to_python方法实际上并没有执行类似的操作。

是否为你的项目启用了本地化?在你的设置文件中应该是“USE\L10N=True”。如果没有,打开它是否可以解决您的问题?是的,本地化设置为True。您无法使用内置解析器执行此操作-请参阅。@solarissmoke我将代码的日期标注为:picku_date_time_from=datetime字段(输入格式=[%m/%d/%Y%I:%m%p],localize=True),但是,我仍然得到无效的数据/时间错误。我不明白你的意思。根据我上面的注释链接,Django无法解析包含
%p
的日期时间。