Reputation: 1619
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?
Upvotes: 23
Views: 35046
Reputation: 21844
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")
Upvotes: 46
Reputation: 1101
After testing the accepted answer, I got the following error:
AssertionError: Expected a
date
, but got adatetime
. 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")
Upvotes: 12