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
Вернуться на верх