aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/fields.py
diff options
context:
space:
mode:
authorTom Christie2012-10-29 14:10:38 +0000
committerTom Christie2012-10-29 14:10:38 +0000
commit49f87cfbabe036215cb97d2633d969e27c3915ce (patch)
treecfd9e88b52ff0d63618f75456e51a8d62a036793 /rest_framework/fields.py
parentdfcb560f8f8343d9ffa3cbe24e2036fd4cd55acf (diff)
downloaddjango-rest-framework-49f87cfbabe036215cb97d2633d969e27c3915ce.tar.bz2
Deal with None and missing values
Diffstat (limited to 'rest_framework/fields.py')
-rw-r--r--rest_framework/fields.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index c0e527e5..03c01a88 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -509,7 +509,10 @@ class EmailField(CharField):
default_validators = [validators.validate_email]
def from_native(self, value):
- return super(EmailField, self).from_native(value).strip()
+ ret = super(EmailField, self).from_native(value)
+ if ret is None:
+ return None
+ return ret.strip()
def __deepcopy__(self, memo):
result = copy.copy(self)
@@ -531,8 +534,9 @@ class DateField(WritableField):
empty = None
def from_native(self, value):
- if value is None:
- return value
+ if value in validators.EMPTY_VALUES:
+ return None
+
if isinstance(value, datetime.datetime):
if timezone and settings.USE_TZ and timezone.is_aware(value):
# Convert aware datetimes to the default time zone
@@ -570,8 +574,9 @@ class DateTimeField(WritableField):
empty = None
def from_native(self, value):
- if value is None:
- return value
+ if value in validators.EMPTY_VALUES:
+ return None
+
if isinstance(value, datetime.datetime):
return value
if isinstance(value, datetime.date):
@@ -629,6 +634,7 @@ class IntegerField(WritableField):
def from_native(self, value):
if value in validators.EMPTY_VALUES:
return None
+
try:
value = int(str(value))
except (ValueError, TypeError):
@@ -644,8 +650,9 @@ class FloatField(WritableField):
}
def from_native(self, value):
- if value is None:
- return value
+ if value in validators.EMPTY_VALUES:
+ return None
+
try:
return float(value)
except (TypeError, ValueError):