From ad336cc636d98022ea7eda516a04a7937eb32238 Mon Sep 17 00:00:00 2001 From: Tom Christie <tom@tomchristie.com> Date: Thu, 7 Mar 2013 09:03:53 +0000 Subject: [PATCH] Fix broken `None` value for `TimeField`. Refs #707. --- rest_framework/fields.py | 7 +++++++ 1 file changed, 7 insertions(+) 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)