mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-05 04:50:12 +03:00
Merge 8641cd68bb
into a251b93792
This commit is contained in:
commit
eeea2c8441
|
@ -15,6 +15,7 @@ from django.http import Http404
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
from rest_framework import exceptions, serializers
|
from rest_framework import exceptions, serializers
|
||||||
|
from rest_framework.fields import empty
|
||||||
from rest_framework.request import clone_request
|
from rest_framework.request import clone_request
|
||||||
from rest_framework.utils.field_mapping import ClassLookupDict
|
from rest_framework.utils.field_mapping import ClassLookupDict
|
||||||
|
|
||||||
|
@ -123,13 +124,16 @@ class SimpleMetadata(BaseMetadata):
|
||||||
|
|
||||||
attrs = [
|
attrs = [
|
||||||
'read_only', 'label', 'help_text',
|
'read_only', 'label', 'help_text',
|
||||||
'min_length', 'max_length',
|
'min_length', 'max_length', 'default',
|
||||||
'min_value', 'max_value'
|
'min_value', 'max_value'
|
||||||
]
|
]
|
||||||
|
|
||||||
for attr in attrs:
|
for attr in attrs:
|
||||||
value = getattr(field, attr, None)
|
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)
|
field_info[attr] = force_text(value, strings_only=True)
|
||||||
|
|
||||||
if getattr(field, 'child', None):
|
if getattr(field, 'child', None):
|
||||||
|
|
|
@ -77,7 +77,7 @@ class TestMetadata:
|
||||||
min_value=1, max_value=1000
|
min_value=1, max_value=1000
|
||||||
)
|
)
|
||||||
char_field = serializers.CharField(
|
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(
|
list_field = serializers.ListField(
|
||||||
child=serializers.ListField(
|
child=serializers.ListField(
|
||||||
|
@ -85,6 +85,7 @@ class TestMetadata:
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
nested_field = NestedField()
|
nested_field = NestedField()
|
||||||
|
defaultuser_field = serializers.HiddenField(default=serializers.CurrentUserDefault())
|
||||||
|
|
||||||
class ExampleView(views.APIView):
|
class ExampleView(views.APIView):
|
||||||
"""Example view."""
|
"""Example view."""
|
||||||
|
@ -92,7 +93,10 @@ class TestMetadata:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def get_serializer(self):
|
def get_serializer(self):
|
||||||
return ExampleSerializer()
|
if self.request:
|
||||||
|
return ExampleSerializer(context={'request': self.request})
|
||||||
|
else:
|
||||||
|
return ExampleSerializer()
|
||||||
|
|
||||||
view = ExampleView.as_view()
|
view = ExampleView.as_view()
|
||||||
response = view(request=request)
|
response = view(request=request)
|
||||||
|
@ -136,7 +140,8 @@ class TestMetadata:
|
||||||
'read_only': False,
|
'read_only': False,
|
||||||
'label': 'Char field',
|
'label': 'Char field',
|
||||||
'min_length': 3,
|
'min_length': 3,
|
||||||
'max_length': 40
|
'max_length': 40,
|
||||||
|
'default': 'Cookie'
|
||||||
},
|
},
|
||||||
'list_field': {
|
'list_field': {
|
||||||
'type': 'list',
|
'type': 'list',
|
||||||
|
@ -173,6 +178,13 @@ class TestMetadata:
|
||||||
'label': 'B'
|
'label': 'B'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
'defaultuser_field': {
|
||||||
|
'type': 'field',
|
||||||
|
'required': False,
|
||||||
|
'read_only': False,
|
||||||
|
'label': 'Defaultuser field',
|
||||||
|
'default': 'AnonymousUser'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user