Django DateTimeField serializer return datetime into string format

I have a serializer that validates datetime fields.

import rest_framework.serializers as serializer

from django.conf import settings

class ValueNestedSerializer(serializer.Serializer):
    lower = serializer.DateTimeField(format=settings.DEFAULT_DATETIME_FORMAT, input_formats=settings.DATETIME_INPUT_FORMATS, required=True)
    upper = serializer.DateTimeField(format=settings.DEFAULT_DATETIME_FORMAT, input_formats=settings.DATETIME_INPUT_FORMATS, required=True)

class DateRangeSerializer(serializer.Serializer):
    attribute = serializer.CharField(default="UPLOAD_TIME", allow_null=True)
    operator = serializer.CharField(default="between_dates")
    value = ValueNestedSerializer(required=True)
    timezone = serializer.CharField(default="UTC")
    timezoneOffset = serializer.IntegerField(default=0)
    def validate_attribute(self, attribute):
        return 'device_time' if attribute and attribute.lower() == 'device_time' else 'date_range'

The payload is in the format:

"date_range": {
        "attribute": "date_range",
        "operator": "between_dates",
        "value": {
            "lower": "2023-01-06T00:00:00Z",
            "upper": "2023-02-06T23:59:59Z"
        }
    }

I tried setting the format to '%Y-%m-%dT%H:%M:%SZ', but this still returns lower and upper values as datetime type.

   (datetime) 2023-02-06 23:59:59+00:00

How do I get these values as string?

Back to Top