This commit is contained in:
Johan Charpentier 2017-05-12 15:43:02 +00:00 committed by GitHub
commit eeea2c8441
2 changed files with 21 additions and 5 deletions

View File

@ -15,6 +15,7 @@ from django.http import Http404
from django.utils.encoding import force_text
from rest_framework import exceptions, serializers
from rest_framework.fields import empty
from rest_framework.request import clone_request
from rest_framework.utils.field_mapping import ClassLookupDict
@ -123,13 +124,16 @@ class SimpleMetadata(BaseMetadata):
attrs = [
'read_only', 'label', 'help_text',
'min_length', 'max_length',
'min_length', 'max_length', 'default',
'min_value', 'max_value'
]
for attr in attrs:
value = getattr(field, attr, None)
if value is not None and value != '':
if value is not None and value != '' and value != empty:
if callable(value):
value.set_context(field)
value = value()
field_info[attr] = force_text(value, strings_only=True)
if getattr(field, 'child', None):

View File

@ -77,7 +77,7 @@ class TestMetadata:
min_value=1, max_value=1000
)
char_field = serializers.CharField(
required=False, min_length=3, max_length=40
required=False, min_length=3, max_length=40, default='Cookie'
)
list_field = serializers.ListField(
child=serializers.ListField(
@ -85,6 +85,7 @@ class TestMetadata:
)
)
nested_field = NestedField()
defaultuser_field = serializers.HiddenField(default=serializers.CurrentUserDefault())
class ExampleView(views.APIView):
"""Example view."""
@ -92,7 +93,10 @@ class TestMetadata:
pass
def get_serializer(self):
return ExampleSerializer()
if self.request:
return ExampleSerializer(context={'request': self.request})
else:
return ExampleSerializer()
view = ExampleView.as_view()
response = view(request=request)
@ -136,7 +140,8 @@ class TestMetadata:
'read_only': False,
'label': 'Char field',
'min_length': 3,
'max_length': 40
'max_length': 40,
'default': 'Cookie'
},
'list_field': {
'type': 'list',
@ -173,6 +178,13 @@ class TestMetadata:
'label': 'B'
}
}
},
'defaultuser_field': {
'type': 'field',
'required': False,
'read_only': False,
'label': 'Defaultuser field',
'default': 'AnonymousUser'
}
}
}