diff --git a/rest_framework/fields.py b/rest_framework/fields.py index e9bae0ec9..0a199f102 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -536,8 +536,10 @@ class DateField(WritableField): def to_native(self, value): if value is None: return None + if isinstance(value, datetime.datetime): value = value.date() + if self.format.lower() == ISO_8601: return value.isoformat() return value.strftime(self.format) @@ -603,6 +605,7 @@ class DateTimeField(WritableField): def to_native(self, value): if value is None: return None + if self.format.lower() == ISO_8601: return value.isoformat() return value.strftime(self.format) @@ -653,8 +656,12 @@ class TimeField(WritableField): raise ValidationError(msg) def to_native(self, value): + if value is None: + return None + if isinstance(value, datetime.datetime): value = value.time() + if self.format.lower() == ISO_8601: return value.isoformat() return value.strftime(self.format)