diff options
| author | Tom Christie | 2012-10-29 14:10:38 +0000 |
|---|---|---|
| committer | Tom Christie | 2012-10-29 14:10:38 +0000 |
| commit | 49f87cfbabe036215cb97d2633d969e27c3915ce (patch) | |
| tree | cfd9e88b52ff0d63618f75456e51a8d62a036793 /rest_framework/fields.py | |
| parent | dfcb560f8f8343d9ffa3cbe24e2036fd4cd55acf (diff) | |
| download | django-rest-framework-49f87cfbabe036215cb97d2633d969e27c3915ce.tar.bz2 | |
Deal with None and missing values
Diffstat (limited to 'rest_framework/fields.py')
| -rw-r--r-- | rest_framework/fields.py | 21 |
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): |
