Skip to content

Commit 18cdfcd

Browse files
committed
Merge pull request #3731 from mjparker777/master
Issue 3726 DateTimeField not handling empty values
2 parents 61e7f7b + d9c3608 commit 18cdfcd

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

rest_framework/fields.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,6 +1061,9 @@ def to_internal_value(self, value):
10611061
self.fail('invalid', format=humanized_format)
10621062

10631063
def to_representation(self, value):
1064+
if not value:
1065+
return None
1066+
10641067
output_format = getattr(self, 'format', api_settings.DATETIME_FORMAT)
10651068

10661069
if output_format is None:
@@ -1118,11 +1121,11 @@ def to_internal_value(self, value):
11181121
self.fail('invalid', format=humanized_format)
11191122

11201123
def to_representation(self, value):
1121-
output_format = getattr(self, 'format', api_settings.DATE_FORMAT)
1122-
11231124
if not value:
11241125
return None
11251126

1127+
output_format = getattr(self, 'format', api_settings.DATE_FORMAT)
1128+
11261129
if output_format is None:
11271130
return value
11281131

@@ -1183,6 +1186,9 @@ def to_internal_value(self, value):
11831186
self.fail('invalid', format=humanized_format)
11841187

11851188
def to_representation(self, value):
1189+
if not value:
1190+
return None
1191+
11861192
output_format = getattr(self, 'format', api_settings.TIME_FORMAT)
11871193

11881194
if output_format is None:

tests/test_fields.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -959,7 +959,9 @@ class TestDateTimeField(FieldValues):
959959
}
960960
outputs = {
961961
datetime.datetime(2001, 1, 1, 13, 00): '2001-01-01T13:00:00',
962-
datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()): '2001-01-01T13:00:00Z'
962+
datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()): '2001-01-01T13:00:00Z',
963+
None: None,
964+
'': None,
963965
}
964966
field = serializers.DateTimeField(default_timezone=timezone.UTC())
965967

@@ -1028,7 +1030,9 @@ class TestTimeField(FieldValues):
10281030
'99:99': ['Time has wrong format. Use one of these formats instead: hh:mm[:ss[.uuuuuu]].'],
10291031
}
10301032
outputs = {
1031-
datetime.time(13, 00): '13:00:00'
1033+
datetime.time(13, 00): '13:00:00',
1034+
None: None,
1035+
'': None,
10321036
}
10331037
field = serializers.TimeField()
10341038

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy