diff options
| author | Òscar Vilaplana | 2013-05-19 01:59:19 -0700 |
|---|---|---|
| committer | Òscar Vilaplana | 2013-05-19 01:59:19 -0700 |
| commit | 42b61ffcd7dd5091846d884cba34f3a82dcf81f4 (patch) | |
| tree | b33a515f024a93051424318b2c6d1a291fee5198 /rest_framework/fields.py | |
| parent | fecadacab150aab48b8b84f4f0e5340ead74c287 (diff) | |
| parent | c0f3a1c397a564ee78b3a656f14f7ff46b0d2b31 (diff) | |
| download | django-rest-framework-42b61ffcd7dd5091846d884cba34f3a82dcf81f4.tar.bz2 | |
Merge pull request #1 from nschlemm/issue-192-expose-fields-for-options
Merged work in progress for Issue 192 expose fields for options
Diffstat (limited to 'rest_framework/fields.py')
| -rw-r--r-- | rest_framework/fields.py | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 544afc98..a215e02b 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -27,7 +27,7 @@ from rest_framework.compat import (timezone, parse_date, parse_datetime, parse_time) from rest_framework.compat import BytesIO from rest_framework.compat import six -from rest_framework.compat import smart_text +from rest_framework.compat import smart_text, force_text, is_non_str_iterable from rest_framework.settings import api_settings @@ -76,7 +76,6 @@ def is_simple_callable(obj): len_defaults = len(defaults) if defaults else 0 return len_args <= len_defaults - def get_component(obj, attr_name): """ Given an object, and an attribute name, @@ -137,7 +136,7 @@ def humanize_field(field): humanized = { 'type': humanize_field_type(field.__class__), 'required': getattr(field, 'required', False), - 'label': field.label, + 'label': getattr(field, 'label', None), } optional_attrs = ['read_only', 'help_text'] for attr in optional_attrs: @@ -256,7 +255,8 @@ class Field(object): if is_protected_type(value): return value - elif hasattr(value, '__iter__') and not isinstance(value, (dict, six.string_types)): + elif (is_non_str_iterable(value) and + not isinstance(value, (dict, six.string_types))): return [self.to_native(item) for item in value] elif isinstance(value, dict): # Make sure we preserve field ordering, if it exists @@ -264,7 +264,7 @@ class Field(object): for key, val in value.items(): ret[key] = self.to_native(val) return ret - return smart_text(value) + return force_text(value) def attributes(self): """ @@ -470,7 +470,6 @@ class URLField(CharField): type_name = 'URLField' def __init__(self, **kwargs): - kwargs['max_length'] = kwargs.get('max_length', 200) kwargs['validators'] = [validators.URLValidator()] super(URLField, self).__init__(**kwargs) @@ -479,7 +478,6 @@ class SlugField(CharField): type_name = 'SlugField' def __init__(self, *args, **kwargs): - kwargs['max_length'] = kwargs.get('max_length', 50) super(SlugField, self).__init__(*args, **kwargs) |
