Jin*_*ama 5 python django timefield django-rest-framework
经过数小时的搜索,我发现了许多相关但无法提供帮助的帖子。
我想要做的是输入例如:10:30 AM 到 TimeField。
在浏览器上的 django rest 框架 API 中,它使用这种上午 10:30 格式 ( '%I:%M %p')。
但是当我使用邮递员来测试它时,输出是 24 小时格式('%H:%M:%S')。我也尝试使用 10:30 PM 作为输入,但我得到的输出是 10:30:00 而不是 22:30:00。
我发现的许多答案都建议settings.py使用以下行更改 TimeField 格式:
TIME_INPUT_FORMATS = ('%I:%M %p',)
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用。
很抱歉我在 django rest 框架方面缺乏经验,因为我还在学习。
这是结果的屏幕截图。在浏览器 API 上:
关于邮递员:
如果您查看TimeField上的文档,您将看到:
签名:
TimeField(format=api_settings.TIME_FORMAT, input_formats=None)
在哪里
format- 表示输出格式的字符串。如果未指定,则默认为与TIME_FORMAT设置键相同的值,'iso-8601'除非设置。设置为格式字符串表示应将 to_representation 返回值强制转换为字符串输出。格式字符串描述如下。将此值设置为 None 表示 Python.
input_formats- 表示可用于解析日期的输入格式的字符串列表。如果未指定,TIME_INPUT_FORMATS将使用该设置,默认为['iso-8601']。
因此,您可以在序列化程序上指定formatand input_formats,或者设置settings.TIME_FORMATand settings.TIME_INPUT_FORMATS。
让我们设置第一种情况:
class MySerializer(serializers.Serializer):
...
birthTime=serializers.TimeField(format='%I:%M %p', input_formats='%I:%M %p')
Run Code Online (Sandbox Code Playgroud)
一些建议:
birth_time.您可能需要使用输入格式,因为您可能需要许多不同的输入:
input_formats=['%I:%M %p','%H:%M',...]
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
3756 次 |
| 最近记录: |