Drf - удалить милисекунды из поля serializers.DateTimeField при отправке ответа
Мне нужно написать сериализатор, который возвращает datetime в следующих форматах:
2012-01-01T13:00:00+00:00 (utc_with_timezone)
2020-01-01T09:00:00 (with_out_timezone)
но ответ, который отправляется, содержит милисекунды: 2022-01-01T18:14:05.378897+05:00
class SomeResponse(serializers.Serializer):
utc_with_timezone = DateTimeField()
with_out_timezone = DateTimeField()
Как я могу управлять выходным форматом без изменения настроек для всего проекта?
Я решил проблему, переопределив to_representation из serializers.DateTimeField:
class SomeResponse(serializers.Serializer):
modified = TimeZoneWithUTCField()
local_time = TimeZoneWithUTCField()
class TimeZoneWithUTCField(serializers.DateTimeField):
def to_representation(self, value):
if not value:
return None
value = value.strftime("%Y-%m-%dT%H:%M:%S%z")
if value.endswith('+0000'):
value = value[:-5] + '+00:00'
return value