mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-06 21:40:13 +03:00
Added serializers. back to serializer classes
This commit is contained in:
parent
556cf1205d
commit
edfcdba913
|
@ -12,7 +12,7 @@ from django.core.exceptions import PermissionDenied
|
|||
from django.http import Http404
|
||||
from django.utils.encoding import force_text
|
||||
|
||||
from rest_framework import exceptions
|
||||
from rest_framework import exceptions, serializers
|
||||
from rest_framework.fields import (
|
||||
BooleanField, CharField, ChoiceField, DateField, DateTimeField,
|
||||
DecimalField, DictField, EmailField, Field, FileField, FloatField,
|
||||
|
@ -21,7 +21,6 @@ from rest_framework.fields import (
|
|||
)
|
||||
from rest_framework.relations import ManyRelatedField, RelatedField
|
||||
from rest_framework.request import clone_request
|
||||
from rest_framework.serializers import Serializer
|
||||
from rest_framework.utils.field_mapping import ClassLookupDict
|
||||
|
||||
|
||||
|
@ -62,7 +61,7 @@ class SimpleMetadata(BaseMetadata):
|
|||
ImageField: 'image upload',
|
||||
ListField: 'list',
|
||||
DictField: 'nested object',
|
||||
Serializer: 'nested object',
|
||||
serializers.Serializer: 'nested object',
|
||||
})
|
||||
|
||||
def determine_metadata(self, request, view):
|
||||
|
|
|
@ -17,7 +17,7 @@ from django.http.multipartparser import parse_header
|
|||
from django.template import Template, loader
|
||||
from django.test.client import encode_multipart
|
||||
|
||||
from rest_framework import VERSION, exceptions, status
|
||||
from rest_framework import VERSION, exceptions, serializers, status
|
||||
from rest_framework.compat import (
|
||||
INDENT_SEPARATORS, LONG_SEPARATORS, SHORT_SEPARATORS, coreapi,
|
||||
template_render
|
||||
|
@ -32,7 +32,6 @@ from rest_framework.relations import (
|
|||
ImproperlyConfigured, ManyRelatedField, RelatedField
|
||||
)
|
||||
from rest_framework.request import is_form_media_type, override_method
|
||||
from rest_framework.serializers import ListSerializer, Serializer
|
||||
from rest_framework.settings import api_settings
|
||||
from rest_framework.utils import encoders
|
||||
from rest_framework.utils.breadcrumbs import get_breadcrumbs
|
||||
|
@ -322,10 +321,10 @@ class HTMLFormRenderer(BaseRenderer):
|
|||
'base_template': 'select_multiple.html',
|
||||
# Also valid: 'checkbox_multiple.html'
|
||||
},
|
||||
Serializer: {
|
||||
serializers.Serializer: {
|
||||
'base_template': 'fieldset.html'
|
||||
},
|
||||
ListSerializer: {
|
||||
serializers.ListSerializer: {
|
||||
'base_template': 'list_fieldset.html'
|
||||
},
|
||||
FilePathField: {
|
||||
|
|
|
@ -10,7 +10,7 @@ from django.template.response import SimpleTemplateResponse
|
|||
from django.utils import six
|
||||
from django.utils.six.moves.http_client import responses
|
||||
|
||||
from rest_framework.serializers import Serializer
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
class Response(SimpleTemplateResponse):
|
||||
|
@ -31,7 +31,7 @@ class Response(SimpleTemplateResponse):
|
|||
"""
|
||||
super(Response, self).__init__(None, status=status)
|
||||
|
||||
if isinstance(data, Serializer):
|
||||
if isinstance(data, serializers.Serializer):
|
||||
msg = (
|
||||
'You passed a Serializer instance as data, but '
|
||||
'probably meant to pass serialized `.data` or '
|
||||
|
@ -98,8 +98,8 @@ class Response(SimpleTemplateResponse):
|
|||
"""
|
||||
state = super(Response, self).__getstate__()
|
||||
for key in (
|
||||
'accepted_renderer', 'renderer_context', 'resolver_match',
|
||||
'client', 'request', 'json', 'wsgi_request'
|
||||
'accepted_renderer', 'renderer_context', 'resolver_match',
|
||||
'client', 'request', 'json', 'wsgi_request'
|
||||
):
|
||||
if key in state:
|
||||
del state[key]
|
||||
|
|
|
@ -7,7 +7,7 @@ from django.conf import settings
|
|||
from django.contrib.admindocs.views import simplify_regex
|
||||
from django.utils.encoding import force_text, smart_text
|
||||
|
||||
from rest_framework import exceptions, renderers
|
||||
from rest_framework import exceptions, renderers, serializers
|
||||
from rest_framework.compat import (
|
||||
RegexURLPattern, RegexURLResolver, coreapi, uritemplate, urlparse
|
||||
)
|
||||
|
@ -18,7 +18,6 @@ from rest_framework.fields import (
|
|||
from rest_framework.relations import ManyRelatedField
|
||||
from rest_framework.request import clone_request
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.serializers import ListSerializer, Serializer
|
||||
from rest_framework.settings import api_settings
|
||||
from rest_framework.utils import formatting
|
||||
from rest_framework.utils.field_mapping import ClassLookupDict
|
||||
|
@ -36,8 +35,8 @@ types_lookup = ClassLookupDict({
|
|||
FileField: 'file',
|
||||
MultipleChoiceField: 'array',
|
||||
ManyRelatedField: 'array',
|
||||
Serializer: 'object',
|
||||
ListSerializer: 'array'
|
||||
serializers.Serializer: 'object',
|
||||
serializers.ListSerializer: 'array'
|
||||
})
|
||||
|
||||
|
||||
|
@ -463,7 +462,7 @@ class SchemaGenerator(object):
|
|||
|
||||
serializer = view.get_serializer()
|
||||
|
||||
if isinstance(serializer, ListSerializer):
|
||||
if isinstance(serializer, serializers.ListSerializer):
|
||||
return [
|
||||
coreapi.Field(
|
||||
name='data',
|
||||
|
@ -473,7 +472,7 @@ class SchemaGenerator(object):
|
|||
)
|
||||
]
|
||||
|
||||
if not isinstance(serializer, Serializer):
|
||||
if not isinstance(serializer, serializers.Serializer):
|
||||
return []
|
||||
|
||||
fields = []
|
||||
|
|
|
@ -11,6 +11,7 @@ from django.test import TestCase, override_settings
|
|||
from django.utils import timezone
|
||||
|
||||
import rest_framework
|
||||
from rest_framework import serializers
|
||||
from rest_framework.fields import (
|
||||
BooleanField, CharField, ChoiceField, DateField, DateTimeField,
|
||||
DecimalField, DictField, DurationField, EmailField, Field, FileField,
|
||||
|
@ -20,7 +21,6 @@ from rest_framework.fields import (
|
|||
SkipField, SlugField, TimeField, URLField, UUIDField, ValidationError,
|
||||
is_simple_callable, six
|
||||
)
|
||||
from rest_framework.serializers import CreateOnlyDefault, Serializer
|
||||
|
||||
try:
|
||||
import typings
|
||||
|
@ -152,7 +152,7 @@ class TestEmpty:
|
|||
|
||||
class TestSource:
|
||||
def test_source(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
example_field = CharField(source='other')
|
||||
|
||||
serializer = ExampleSerializer(data={'example_field': 'abc'})
|
||||
|
@ -160,7 +160,7 @@ class TestSource:
|
|||
assert serializer.validated_data == {'other': 'abc'}
|
||||
|
||||
def test_redundant_source(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
example_field = CharField(source='example_field')
|
||||
|
||||
with pytest.raises(AssertionError) as exc_info:
|
||||
|
@ -172,7 +172,7 @@ class TestSource:
|
|||
)
|
||||
|
||||
def test_callable_source(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
example_field = CharField(source='example_callable')
|
||||
|
||||
class ExampleInstance(object):
|
||||
|
@ -183,7 +183,7 @@ class TestSource:
|
|||
assert serializer.data['example_field'] == 'example callable value'
|
||||
|
||||
def test_callable_source_raises(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
example_field = CharField(source='example_callable',
|
||||
read_only=True)
|
||||
|
||||
|
@ -200,7 +200,7 @@ class TestSource:
|
|||
|
||||
class TestReadOnly:
|
||||
def setup(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
read_only = ReadOnlyField()
|
||||
writable = IntegerField()
|
||||
|
||||
|
@ -226,7 +226,7 @@ class TestReadOnly:
|
|||
|
||||
class TestWriteOnly:
|
||||
def setup(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
write_only = IntegerField(write_only=True)
|
||||
readable = IntegerField()
|
||||
|
||||
|
@ -253,7 +253,7 @@ class TestWriteOnly:
|
|||
|
||||
class TestInitial:
|
||||
def setup(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
initial_field = IntegerField(initial=123)
|
||||
blank_field = IntegerField()
|
||||
|
||||
|
@ -274,7 +274,7 @@ class TestInitialWithCallable:
|
|||
def initial_value():
|
||||
return 123
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
initial_field = IntegerField(initial=initial_value)
|
||||
|
||||
self.serializer = TestSerializer()
|
||||
|
@ -290,7 +290,7 @@ class TestInitialWithCallable:
|
|||
|
||||
class TestLabel:
|
||||
def setup(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
labeled = IntegerField(label='My label')
|
||||
|
||||
self.serializer = TestSerializer()
|
||||
|
@ -332,7 +332,7 @@ class TestBooleanHTMLInput:
|
|||
as `False` by BooleanField.
|
||||
"""
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
archived = BooleanField()
|
||||
|
||||
serializer = TestSerializer(data=QueryDict(''))
|
||||
|
@ -345,7 +345,7 @@ class TestBooleanHTMLInput:
|
|||
as `False` by BooleanField, even if the field is required=False.
|
||||
"""
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
archived = BooleanField(required=False)
|
||||
|
||||
serializer = TestSerializer(data=QueryDict(''))
|
||||
|
@ -355,7 +355,7 @@ class TestBooleanHTMLInput:
|
|||
|
||||
class TestHTMLInput:
|
||||
def test_empty_html_charfield_with_default(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
message = CharField(default='happy')
|
||||
|
||||
serializer = TestSerializer(data=QueryDict(''))
|
||||
|
@ -363,7 +363,7 @@ class TestHTMLInput:
|
|||
assert serializer.validated_data == {'message': 'happy'}
|
||||
|
||||
def test_empty_html_charfield_without_default(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
message = CharField(allow_blank=True)
|
||||
|
||||
serializer = TestSerializer(data=QueryDict('message='))
|
||||
|
@ -371,7 +371,7 @@ class TestHTMLInput:
|
|||
assert serializer.validated_data == {'message': ''}
|
||||
|
||||
def test_empty_html_charfield_without_default_not_required(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
message = CharField(allow_blank=True, required=False)
|
||||
|
||||
serializer = TestSerializer(data=QueryDict('message='))
|
||||
|
@ -379,7 +379,7 @@ class TestHTMLInput:
|
|||
assert serializer.validated_data == {'message': ''}
|
||||
|
||||
def test_empty_html_integerfield(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
message = IntegerField(default=123)
|
||||
|
||||
serializer = TestSerializer(data=QueryDict('message='))
|
||||
|
@ -387,7 +387,7 @@ class TestHTMLInput:
|
|||
assert serializer.validated_data == {'message': 123}
|
||||
|
||||
def test_empty_html_uuidfield_with_default(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
message = UUIDField(default=uuid.uuid4)
|
||||
|
||||
serializer = TestSerializer(data=QueryDict('message='))
|
||||
|
@ -395,7 +395,7 @@ class TestHTMLInput:
|
|||
assert list(serializer.validated_data.keys()) == ['message']
|
||||
|
||||
def test_empty_html_uuidfield_with_optional(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
message = UUIDField(required=False)
|
||||
|
||||
serializer = TestSerializer(data=QueryDict('message='))
|
||||
|
@ -403,7 +403,7 @@ class TestHTMLInput:
|
|||
assert list(serializer.validated_data.keys()) == []
|
||||
|
||||
def test_empty_html_charfield_allow_null(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
message = CharField(allow_null=True)
|
||||
|
||||
serializer = TestSerializer(data=QueryDict('message='))
|
||||
|
@ -411,7 +411,7 @@ class TestHTMLInput:
|
|||
assert serializer.validated_data == {'message': None}
|
||||
|
||||
def test_empty_html_datefield_allow_null(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
expiry = DateField(allow_null=True)
|
||||
|
||||
serializer = TestSerializer(data=QueryDict('expiry='))
|
||||
|
@ -419,7 +419,7 @@ class TestHTMLInput:
|
|||
assert serializer.validated_data == {'expiry': None}
|
||||
|
||||
def test_empty_html_charfield_allow_null_allow_blank(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
message = CharField(allow_null=True, allow_blank=True)
|
||||
|
||||
serializer = TestSerializer(data=QueryDict('message='))
|
||||
|
@ -427,7 +427,7 @@ class TestHTMLInput:
|
|||
assert serializer.validated_data == {'message': ''}
|
||||
|
||||
def test_empty_html_charfield_required_false(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
message = CharField(required=False)
|
||||
|
||||
serializer = TestSerializer(data=QueryDict(''))
|
||||
|
@ -435,7 +435,7 @@ class TestHTMLInput:
|
|||
assert serializer.validated_data == {}
|
||||
|
||||
def test_querydict_list_input(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
scores = ListField(child=IntegerField())
|
||||
|
||||
serializer = TestSerializer(data=QueryDict('scores=1&scores=3'))
|
||||
|
@ -443,7 +443,7 @@ class TestHTMLInput:
|
|||
assert serializer.validated_data == {'scores': [1, 3]}
|
||||
|
||||
def test_querydict_list_input_only_one_input(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
scores = ListField(child=IntegerField())
|
||||
|
||||
serializer = TestSerializer(data=QueryDict('scores=1&'))
|
||||
|
@ -453,9 +453,9 @@ class TestHTMLInput:
|
|||
|
||||
class TestCreateOnlyDefault:
|
||||
def setup(self):
|
||||
default = CreateOnlyDefault('2001-01-01')
|
||||
default = serializers.CreateOnlyDefault('2001-01-01')
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
published = HiddenField(default=default)
|
||||
text = CharField()
|
||||
|
||||
|
@ -491,9 +491,9 @@ class TestCreateOnlyDefault:
|
|||
def __call__(self):
|
||||
return "success" if hasattr(self, 'field') else "failure"
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
context_set = CharField(
|
||||
default=CreateOnlyDefault(TestCallableDefault()))
|
||||
default=serializers.CreateOnlyDefault(TestCallableDefault()))
|
||||
|
||||
serializer = TestSerializer(data={})
|
||||
assert serializer.is_valid()
|
||||
|
@ -1855,7 +1855,7 @@ class TestJSONField(FieldValues):
|
|||
HTML inputs should be treated as a serialized JSON string.
|
||||
"""
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
config = JSONField()
|
||||
|
||||
data = QueryDict(mutable=True)
|
||||
|
@ -1907,7 +1907,7 @@ class TestFileFieldContext:
|
|||
|
||||
class TestSerializerMethodField:
|
||||
def test_serializer_method_field(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
example_field = SerializerMethodField()
|
||||
|
||||
def get_example_field(self, obj):
|
||||
|
@ -1919,7 +1919,7 @@ class TestSerializerMethodField:
|
|||
}
|
||||
|
||||
def test_redundant_method_name(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
example_field = SerializerMethodField('get_example_field')
|
||||
|
||||
with pytest.raises(AssertionError) as exc_info:
|
||||
|
|
|
@ -4,14 +4,15 @@ from django.core.validators import MaxValueValidator, MinValueValidator
|
|||
from django.db import models
|
||||
from django.test import TestCase
|
||||
|
||||
from rest_framework import exceptions, metadata, status, versioning, views
|
||||
from rest_framework import (
|
||||
exceptions, metadata, serializers, status, versioning, views
|
||||
)
|
||||
from rest_framework.fields import (
|
||||
CharField, ChoiceField, IntegerField, ListField, NullBooleanField
|
||||
)
|
||||
from rest_framework.relations import PrimaryKeyRelatedField, RelatedField
|
||||
from rest_framework.renderers import BrowsableAPIRenderer
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.serializers import ModelSerializer, Serializer
|
||||
from rest_framework.test import APIRequestFactory
|
||||
|
||||
from .models import BasicModel
|
||||
|
@ -67,11 +68,11 @@ class TestMetadata:
|
|||
on the fields that may be supplied to PUT and POST requests.
|
||||
"""
|
||||
|
||||
class NestedField(Serializer):
|
||||
class NestedField(serializers.Serializer):
|
||||
a = IntegerField()
|
||||
b = IntegerField()
|
||||
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
choice_field = ChoiceField(['red', 'green', 'blue'])
|
||||
integer_field = IntegerField(
|
||||
min_value=1, max_value=1000
|
||||
|
@ -187,7 +188,7 @@ class TestMetadata:
|
|||
metadata associated with it should not be included in OPTION responses.
|
||||
"""
|
||||
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
choice_field = ChoiceField(['red', 'green', 'blue'])
|
||||
integer_field = IntegerField(max_value=10)
|
||||
char_field = CharField(required=False)
|
||||
|
@ -219,7 +220,7 @@ class TestMetadata:
|
|||
metadata associated with it should not be included in OPTION responses.
|
||||
"""
|
||||
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
choice_field = ChoiceField(['red', 'green', 'blue'])
|
||||
integer_field = IntegerField(max_value=10)
|
||||
char_field = CharField(required=False)
|
||||
|
@ -254,7 +255,7 @@ class TestMetadata:
|
|||
|
||||
def get_serializer(self):
|
||||
assert hasattr(self.request, 'version')
|
||||
return Serializer()
|
||||
return serializers.Serializer()
|
||||
|
||||
view = ExampleView.as_view()
|
||||
view(request=request)
|
||||
|
@ -268,7 +269,7 @@ class TestMetadata:
|
|||
|
||||
def get_serializer(self):
|
||||
assert hasattr(self.request, 'versioning_scheme')
|
||||
return Serializer()
|
||||
return serializers.Serializer()
|
||||
|
||||
scheme = versioning.QueryParameterVersioning
|
||||
view = ExampleView.as_view(versioning_class=scheme)
|
||||
|
@ -308,7 +309,7 @@ class TestModelSerializerMetadata(TestCase):
|
|||
class Child(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
|
||||
class ExampleSerializer(ModelSerializer):
|
||||
class ExampleSerializer(serializers.ModelSerializer):
|
||||
children = PrimaryKeyRelatedField(read_only=True, many=True)
|
||||
|
||||
class Meta:
|
||||
|
|
|
@ -8,8 +8,8 @@ from django.db import models
|
|||
from django.test import TestCase
|
||||
from django.utils.encoding import python_2_unicode_compatible
|
||||
|
||||
from rest_framework import serializers
|
||||
from rest_framework.relations import StringRelatedField
|
||||
from rest_framework.serializers import ModelSerializer
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
|
@ -65,7 +65,7 @@ class TestGenericRelations(TestCase):
|
|||
IE. A reverse generic relationship.
|
||||
"""
|
||||
|
||||
class BookmarkSerializer(ModelSerializer):
|
||||
class BookmarkSerializer(serializers.ModelSerializer):
|
||||
tags = StringRelatedField(many=True)
|
||||
|
||||
class Meta:
|
||||
|
@ -85,7 +85,7 @@ class TestGenericRelations(TestCase):
|
|||
IE. A forward generic relationship.
|
||||
"""
|
||||
|
||||
class TagSerializer(ModelSerializer):
|
||||
class TagSerializer(serializers.ModelSerializer):
|
||||
tagged_item = StringRelatedField()
|
||||
|
||||
class Meta:
|
||||
|
|
|
@ -13,7 +13,7 @@ from django.utils import six
|
|||
from django.utils.safestring import SafeText
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from rest_framework import permissions, status
|
||||
from rest_framework import permissions, serializers, status
|
||||
from rest_framework.fields import (
|
||||
CharField, ChoiceField, HiddenField, MultipleChoiceField, OrderedDict
|
||||
)
|
||||
|
@ -21,7 +21,6 @@ from rest_framework.renderers import (
|
|||
BaseRenderer, BrowsableAPIRenderer, HTMLFormRenderer, JSONRenderer
|
||||
)
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.serializers import Serializer
|
||||
from rest_framework.settings import api_settings
|
||||
from rest_framework.test import APIRequestFactory
|
||||
from rest_framework.views import APIView
|
||||
|
@ -483,7 +482,7 @@ class TestJSONIndentationStyles:
|
|||
|
||||
class TestHiddenFieldHTMLFormRenderer(TestCase):
|
||||
def test_hidden_field_rendering(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
published = HiddenField(default=True)
|
||||
|
||||
serializer = TestSerializer(data={})
|
||||
|
@ -496,7 +495,7 @@ class TestHiddenFieldHTMLFormRenderer(TestCase):
|
|||
|
||||
class TestHTMLFormRenderer(TestCase):
|
||||
def setUp(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
test_field = CharField()
|
||||
|
||||
self.renderer = HTMLFormRenderer()
|
||||
|
@ -527,7 +526,7 @@ class TestChoiceFieldHTMLFormRenderer(TestCase):
|
|||
def setUp(self):
|
||||
choices = ((1, 'Option1'), (2, 'Option2'), (12, 'Option12'))
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
test_field = ChoiceField(choices=choices,
|
||||
initial=2)
|
||||
|
||||
|
@ -571,7 +570,7 @@ class TestMultipleChoiceFieldHTMLFormRenderer(TestCase):
|
|||
choices = (('1', 'Option1'), ('2', 'Option2'), ('12', 'Option12'),
|
||||
('}', 'OptionBrace'))
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
test_field = MultipleChoiceField(choices=choices)
|
||||
|
||||
serializer = TestSerializer(data={'test_field': ['12']})
|
||||
|
@ -590,7 +589,7 @@ class TestMultipleChoiceFieldHTMLFormRenderer(TestCase):
|
|||
def test_render_selected_option_with_integer_option_ids(self):
|
||||
choices = ((1, 'Option1'), (2, 'Option2'), (12, 'Option12'))
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
test_field = MultipleChoiceField(choices=choices)
|
||||
|
||||
serializer = TestSerializer(data={'test_field': ['12']})
|
||||
|
|
|
@ -6,11 +6,11 @@ import re
|
|||
|
||||
import pytest
|
||||
|
||||
from rest_framework import serializers
|
||||
from rest_framework.compat import unicode_repr
|
||||
from rest_framework.fields import (
|
||||
CharField, IntegerField, RegexField, ValidationError
|
||||
)
|
||||
from rest_framework.serializers import BaseSerializer, Serializer
|
||||
|
||||
from .utils import MockObject
|
||||
|
||||
|
@ -20,7 +20,7 @@ from .utils import MockObject
|
|||
|
||||
class TestSerializer:
|
||||
def setup(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
char = CharField()
|
||||
integer = IntegerField()
|
||||
|
||||
|
@ -77,7 +77,7 @@ class TestSerializer:
|
|||
|
||||
class TestValidateMethod:
|
||||
def test_non_field_error_validate_method(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
char = CharField()
|
||||
integer = IntegerField()
|
||||
|
||||
|
@ -89,7 +89,7 @@ class TestValidateMethod:
|
|||
assert serializer.errors == {'non_field_errors': ['Non field error']}
|
||||
|
||||
def test_field_error_validate_method(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
char = CharField()
|
||||
integer = IntegerField()
|
||||
|
||||
|
@ -103,7 +103,7 @@ class TestValidateMethod:
|
|||
|
||||
class TestBaseSerializer:
|
||||
def setup(self):
|
||||
class ExampleSerializer(BaseSerializer):
|
||||
class ExampleSerializer(serializers.BaseSerializer):
|
||||
def to_representation(self, obj):
|
||||
return {
|
||||
'id': obj['id'],
|
||||
|
@ -173,15 +173,15 @@ class TestStarredSource:
|
|||
}
|
||||
|
||||
def setup(self):
|
||||
class NestedSerializer1(Serializer):
|
||||
class NestedSerializer1(serializers.Serializer):
|
||||
a = IntegerField()
|
||||
b = IntegerField()
|
||||
|
||||
class NestedSerializer2(Serializer):
|
||||
class NestedSerializer2(serializers.Serializer):
|
||||
c = IntegerField()
|
||||
d = IntegerField()
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
nested1 = NestedSerializer1(source='*')
|
||||
nested2 = NestedSerializer2(source='*')
|
||||
|
||||
|
@ -211,7 +211,7 @@ class TestStarredSource:
|
|||
|
||||
class TestIncorrectlyConfigured:
|
||||
def test_incorrect_field_name(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
incorrect_name = IntegerField()
|
||||
|
||||
class ExampleObject:
|
||||
|
@ -232,7 +232,7 @@ class TestIncorrectlyConfigured:
|
|||
|
||||
class TestUnicodeRepr:
|
||||
def test_unicode_repr(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
example = CharField()
|
||||
|
||||
class ExampleObject:
|
||||
|
@ -253,7 +253,7 @@ class TestNotRequiredOutput:
|
|||
'required=False' should allow a dictionary key to be missing in output.
|
||||
"""
|
||||
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
omitted = CharField(required=False)
|
||||
included = CharField()
|
||||
|
||||
|
@ -266,7 +266,7 @@ class TestNotRequiredOutput:
|
|||
'required=False' should allow an object attribute to be missing in output.
|
||||
"""
|
||||
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
omitted = CharField(required=False)
|
||||
included = CharField()
|
||||
|
||||
|
@ -286,7 +286,7 @@ class TestNotRequiredOutput:
|
|||
'required=False', but it should still have a value.
|
||||
"""
|
||||
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
omitted = CharField(default='abc')
|
||||
included = CharField()
|
||||
|
||||
|
@ -302,7 +302,7 @@ class TestNotRequiredOutput:
|
|||
'required=False', but it should still have a value.
|
||||
"""
|
||||
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
omitted = CharField(default='abc')
|
||||
included = CharField()
|
||||
|
||||
|
@ -319,7 +319,7 @@ class TestCacheSerializerData:
|
|||
but does preserve the data itself.
|
||||
"""
|
||||
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
field1 = CharField()
|
||||
field2 = CharField()
|
||||
|
||||
|
@ -331,7 +331,7 @@ class TestCacheSerializerData:
|
|||
|
||||
class TestDefaultInclusions:
|
||||
def setup(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
char = CharField(read_only=True, default='abc')
|
||||
integer = IntegerField()
|
||||
|
||||
|
@ -361,7 +361,7 @@ class TestDefaultInclusions:
|
|||
|
||||
class TestSerializerValidationWithCompiledRegexField:
|
||||
def setup(self):
|
||||
class ExampleSerializer(Serializer):
|
||||
class ExampleSerializer(serializers.Serializer):
|
||||
name = RegexField(re.compile(r'\d'), required=True)
|
||||
|
||||
self.Serializer = ExampleSerializer
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
from django.utils.datastructures import MultiValueDict
|
||||
|
||||
from rest_framework import serializers
|
||||
from rest_framework.fields import (
|
||||
BooleanField, IntegerField, ListField, MultipleChoiceField,
|
||||
ValidationError
|
||||
)
|
||||
from rest_framework.serializers import ListSerializer, Serializer
|
||||
|
||||
|
||||
class BasicObject:
|
||||
|
@ -33,7 +33,7 @@ class TestListSerializer:
|
|||
"""
|
||||
|
||||
def setup(self):
|
||||
class IntegerListSerializer(ListSerializer):
|
||||
class IntegerListSerializer(serializers.ListSerializer):
|
||||
child = IntegerField()
|
||||
|
||||
self.Serializer = IntegerListSerializer
|
||||
|
@ -65,14 +65,14 @@ class TestListSerializerContainingNestedSerializer:
|
|||
"""
|
||||
|
||||
def setup(self):
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
integer = IntegerField()
|
||||
boolean = BooleanField()
|
||||
|
||||
def create(self, validated_data):
|
||||
return BasicObject(**validated_data)
|
||||
|
||||
class ObjectListSerializer(ListSerializer):
|
||||
class ObjectListSerializer(serializers.ListSerializer):
|
||||
child = TestSerializer()
|
||||
|
||||
self.Serializer = ObjectListSerializer
|
||||
|
@ -151,9 +151,9 @@ class TestNestedListSerializer:
|
|||
"""
|
||||
|
||||
def setup(self):
|
||||
class TestSerializer(Serializer):
|
||||
integers = ListSerializer(child=IntegerField())
|
||||
booleans = ListSerializer(child=BooleanField())
|
||||
class TestSerializer(serializers.Serializer):
|
||||
integers = serializers.ListSerializer(child=IntegerField())
|
||||
booleans = serializers.ListSerializer(child=BooleanField())
|
||||
|
||||
def create(self, validated_data):
|
||||
return BasicObject(**validated_data)
|
||||
|
@ -230,14 +230,14 @@ class TestNestedListSerializer:
|
|||
|
||||
class TestNestedListOfListsSerializer:
|
||||
def setup(self):
|
||||
class TestSerializer(Serializer):
|
||||
integers = ListSerializer(
|
||||
child=ListSerializer(
|
||||
class TestSerializer(serializers.Serializer):
|
||||
integers = serializers.ListSerializer(
|
||||
child=serializers.ListSerializer(
|
||||
child=IntegerField()
|
||||
)
|
||||
)
|
||||
booleans = ListSerializer(
|
||||
child=ListSerializer(
|
||||
booleans = serializers.ListSerializer(
|
||||
child=serializers.ListSerializer(
|
||||
child=BooleanField()
|
||||
)
|
||||
)
|
||||
|
@ -285,11 +285,11 @@ class TestListSerializerClass:
|
|||
"""Tests for a custom list_serializer_class."""
|
||||
|
||||
def test_list_serializer_class_validate(self):
|
||||
class CustomListSerializer(ListSerializer):
|
||||
class CustomListSerializer(serializers.ListSerializer):
|
||||
def validate(self, attrs):
|
||||
raise ValidationError('Non field error')
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
class Meta:
|
||||
list_serializer_class = CustomListSerializer
|
||||
|
||||
|
@ -308,7 +308,7 @@ class TestSerializerPartialUsage:
|
|||
"""
|
||||
|
||||
def test_partial_listfield(self):
|
||||
class ListSerializer(Serializer):
|
||||
class ListSerializer(serializers.Serializer):
|
||||
listdata = ListField()
|
||||
|
||||
serializer = ListSerializer(data=MultiValueDict(), partial=True)
|
||||
|
@ -319,7 +319,7 @@ class TestSerializerPartialUsage:
|
|||
assert serializer.errors == {}
|
||||
|
||||
def test_partial_multiplechoice(self):
|
||||
class MultipleChoiceSerializer(Serializer):
|
||||
class MultipleChoiceSerializer(serializers.Serializer):
|
||||
multiplechoice = MultipleChoiceField(choices=[1, 2, 3])
|
||||
|
||||
serializer = MultipleChoiceSerializer(data=MultiValueDict(),
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
from django.http import QueryDict
|
||||
|
||||
from rest_framework import serializers
|
||||
from rest_framework.fields import IntegerField, MultipleChoiceField
|
||||
from rest_framework.serializers import ListSerializer, Serializer
|
||||
|
||||
|
||||
class TestNestedSerializer:
|
||||
def setup(self):
|
||||
class NestedSerializer(Serializer):
|
||||
class NestedSerializer(serializers.Serializer):
|
||||
one = IntegerField(max_value=10)
|
||||
two = IntegerField(max_value=10)
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
nested = NestedSerializer()
|
||||
|
||||
self.Serializer = TestSerializer
|
||||
|
@ -51,10 +51,10 @@ class TestNestedSerializer:
|
|||
|
||||
class TestNotRequiredNestedSerializer:
|
||||
def setup(self):
|
||||
class NestedSerializer(Serializer):
|
||||
class NestedSerializer(serializers.Serializer):
|
||||
one = IntegerField(max_value=10)
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
nested = NestedSerializer(required=False)
|
||||
|
||||
self.Serializer = TestSerializer
|
||||
|
@ -80,10 +80,10 @@ class TestNotRequiredNestedSerializer:
|
|||
|
||||
class TestNestedSerializerWithMany:
|
||||
def setup(self):
|
||||
class NestedSerializer(Serializer):
|
||||
class NestedSerializer(serializers.Serializer):
|
||||
example = IntegerField(max_value=10)
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
allow_null = NestedSerializer(many=True, allow_null=True)
|
||||
not_allow_null = NestedSerializer(many=True)
|
||||
allow_empty = NestedSerializer(many=True, allow_empty=True)
|
||||
|
@ -174,16 +174,16 @@ class TestNestedSerializerWithMany:
|
|||
assert not serializer.is_valid()
|
||||
|
||||
expected_errors = {'not_allow_empty': {'non_field_errors': [
|
||||
ListSerializer.default_error_messages['empty']]}}
|
||||
serializers.ListSerializer.default_error_messages['empty']]}}
|
||||
assert serializer.errors == expected_errors
|
||||
|
||||
|
||||
class TestNestedSerializerWithList:
|
||||
def setup(self):
|
||||
class NestedSerializer(Serializer):
|
||||
class NestedSerializer(serializers.Serializer):
|
||||
example = MultipleChoiceField(choices=[1, 2, 3])
|
||||
|
||||
class TestSerializer(Serializer):
|
||||
class TestSerializer(serializers.Serializer):
|
||||
nested = NestedSerializer()
|
||||
|
||||
self.Serializer = TestSerializer
|
||||
|
|
Loading…
Reference in New Issue
Block a user