Установить формат DatetimeField конфигурации фреймворка django rest

Я пытаюсь использовать сериализаторы DRF для сериализации объекта модели. Я нахожу DatetimeField в объекте не будет выводить "2015-10-21T09:28:53.769000Z" формата ISO-8601

Я ищу документ DRF, почему я не могу вывести формат ISO-8601. Согласно datetimefield говорит:

format - строка, задающая формат вывода. Если не указано, по умолчанию используется то же значение, что и ключ настроек DATETIME_FORMAT, который будет "iso-8601", если не установлен. Установка строка формата указывает, что возвращаемые значения to_representation должны быть принудительно выведены в строку. Строки формата описаны ниже. Значение None означает, что Python

это означает, что по умолчанию выводится iso-8601 формат, если я никогда не устанавливал

2 ответов


Если вы не знаете, что происходит, и вы все еще не знаете этого, я могу определить формат datettime в настройке следующим образом:

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

вам не нужно определять DATETIME_FORMAT в настройках или format на .

In [1]: from rest_framework import serializers

In [2]: from datetime import datetime

In [3]: class SomeSerializer(serializers.Serializer):
   ....:     last_login = serializers.DateTimeField()
   ....:     

In [4]: x = SomeSerializer(data={'last_login':datetime.now()})

In [5]: x.is_valid()
Out[5]: True

In [6]: x.data # representation of 'last_login' will be in iso-8601 formatted string
Out[6]: OrderedDict([('last_login', u'2015-10-22T09:32:02.788611Z')])