how to format time in django-rest-framework's serializer?

22,844

Solution 1

The usual Python datetime format will work:

# for DateField
date = serializers.DateField(format="%Y-%m-%d")

# for DateTimeField
time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")

Solution 2

After testing the accepted answer, I got the following error:

AssertionError: Expected a date, but got a datetime. Refusing to coerce, as this may mean losing timezone information. Use a custom read-only field and deal with timezone issues explicitly.

Using the serializer field as datetime solved the issue.

class StartListSerializer(serializers.Serializer):

    # ...
    time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
Share:
22,844
nataila
Author by

nataila

Updated on July 09, 2022

Comments

  • nataila
    nataila almost 2 years

    there is my serializer code:
    serializer.py

    class StartListSerializer(serializers.Serializer):
        id = serializer.CharField()
        time = serializers.DateField(fromat=None, input_formats=None) 
    

    it will give me this:
    'time': '2014-03-14T22:44:16.923000'
    the input time format is datetime.datetime(2014, 3, 14, 22, 44, 37, 280000)
    But I want to get time like this 2014-03-14 22:44:37
    how can I change my serializer to get this time?

  • nataila
    nataila over 8 years
    can you help about this? stackoverflow.com/questions/34129830/…
  • Silko
    Silko almost 5 years
    This answer gives error for DateTime fields. Check @Flippym answer bellow.
  • Jari Turkia
    Jari Turkia over 3 years
    The format may have changed in recent versions. I have serializers.DateField(format='YYYY-MM-DD').