Skip to content

Commit cbea03c

Browse files
author
Ryan Allen
committed
DateField to_representation can handle str and empty values. Fixes #2656, #2687.
1 parent 3113e8e commit cbea03c

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

rest_framework/fields.py

+6
Original file line numberDiff line numberDiff line change
@@ -925,6 +925,9 @@ def to_internal_value(self, value):
925925
self.fail('invalid', format=humanized_format)
926926

927927
def to_representation(self, value):
928+
if not value:
929+
return None
930+
928931
if self.format is None:
929932
return value
930933

@@ -938,7 +941,10 @@ def to_representation(self, value):
938941
)
939942

940943
if self.format.lower() == ISO_8601:
944+
if (isinstance(value, str)):
945+
value = datetime.datetime.strptime(value, '%Y-%m-%d').date()
941946
return value.isoformat()
947+
942948
return value.strftime(self.format)
943949

944950

tests/test_fields.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,10 @@ class TestDateField(FieldValues):
726726
datetime.datetime(2001, 1, 1, 12, 00): ['Expected a date but got a datetime.'],
727727
}
728728
outputs = {
729-
datetime.date(2001, 1, 1): '2001-01-01'
729+
datetime.date(2001, 1, 1): '2001-01-01',
730+
'2001-01-01': '2001-01-01',
731+
None: None,
732+
'': None,
730733
}
731734
field = serializers.DateField()
732735

0 commit comments

Comments
 (0)