简体   繁体   English

在Django REST对象中更改日期时间格式

[英]Change Date Time Format in Django REST Object

I've been trying to tackle this problem for quite a while now. 我已经尝试解决这个问题已有一段时间了。 please help if possible... 请帮助...

I have a REST framework response where one of the datetime values is in UTC format. 我有一个REST框架响应,其中datetime值之一为UTC格式。 I want to change this format into a more friendly format. 我想将此格式更改为更友好的格式。

rest framework output: 其余框架输出:

{ 
    "data": [
        {
            "id": "1",
            "start_time": "2017-12-28T12:56:55-08:00",
        },
        {
            "id": "2",
            "start_time": "2017-12-28T12:14:10-08:00",
        },
        {
            "id": "3",
            "start_time": "2017-12-28T09:37:35-08:00",
        },        
    ]
}

views: (my code to change the start_time format in the display) 视图:(我的代码用于更改显示中的start_time格式)

serializer = ChangeLogSerializer(changelog['items'], many=True)
for log in serializer.data:
    serializer.data[log]['start_time'] = log['start_time'].strftime('%Y-%m-%d %T')  

serializers.py serializers.py

class ChangeLogSerializer(serializers.ModelSerializer):
    """Serializer to map the Model instance into JSON format."""

    class Meta:
        """Meta class to map serializer's fields with the model fields."""
        start_time = serializers.DateField(format="%y-%m-%d %H:%M:%S")
        model = ChangeLog

        fields = ('id', 'sku', 'serial_num', 'mac', 'sw_ver',
                  'state', 'outcome', 'logfile', 'process',
                  'cm', 'site', 'port_num', 'term_srvr',
                  'start_time', 'end_time')
        read_only_fields = ('start_time', 'end_time')

Observations: 观察:

  • serializer.data[log] doesn't appear to be correct way to update this item serializer.data [log]似乎不是更新此项的正确方法
  • gives error message: File "/root/venv/dashbaord/lib/python3.4/site-packages/rest_framework/utils/encoders.py", line 68, in default return super(JSONEncoder, self).default(obj) 给出错误消息:文件“ /root/venv/dashbaord/lib/python3.4/site-packages/rest_framework/utils/encoders.py”,第68行,默认情况下返回super(JSONEncoder,self).default(obj)
  • Tried in my serializers.py file to adjust the format: start_time = serializers.DateField(format="%y-%m-%d %H:%M:%S"), but it doesn't do anything 尝试在我的serializers.py文件中调整格式:start_time = serializers.DateField(format =“%y-%m-%d%H:%M:%S”),但它无能为力

Found the answer, changed in settings.py file: 找到了答案,在settings.py文件中进行了更改:

REST_FRAMEWORK = {
    'DATETIME_FORMAT': "%Y-%m-%d - %H:%M:%S",
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM