Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-rest-framework
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
django-rest-framework
Commits
7394dcec
Commit
7394dcec
authored
Nov 13, 2014
by
Tom Christie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ReturnList and ReturnDict wrapped at nicer point
parent
cb672a0e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
13 deletions
+40
-13
rest_framework/serializers.py
+40
-13
No files found.
rest_framework/serializers.py
View file @
7394dcec
...
...
@@ -245,18 +245,18 @@ class Serializer(BaseSerializer):
def
get_initial
(
self
):
if
self
.
_initial_data
is
not
None
:
return
Return
Dict
([
return
Ordered
Dict
([
(
field_name
,
field
.
get_value
(
self
.
_initial_data
))
for
field_name
,
field
in
self
.
fields
.
items
()
if
field
.
get_value
(
self
.
_initial_data
)
is
not
empty
and
not
field
.
read_only
]
,
serializer
=
self
)
])
return
Return
Dict
([
return
Ordered
Dict
([
(
field
.
field_name
,
field
.
get_initial
())
for
field
in
self
.
fields
.
values
()
if
not
field
.
read_only
]
,
serializer
=
self
)
])
def
get_value
(
self
,
dictionary
):
# We override the default field access in order to support
...
...
@@ -319,8 +319,8 @@ class Serializer(BaseSerializer):
"""
Dict of native values <- Dict of primitive datatypes.
"""
ret
=
{}
errors
=
ReturnDict
(
serializer
=
self
)
ret
=
OrderedDict
()
errors
=
OrderedDict
(
)
fields
=
[
field
for
field
in
self
.
fields
.
values
()
if
(
not
field
.
read_only
)
or
(
field
.
default
is
not
empty
)
...
...
@@ -349,7 +349,7 @@ class Serializer(BaseSerializer):
"""
Object instance -> Dict of primitive datatypes.
"""
ret
=
ReturnDict
(
serializer
=
self
)
ret
=
OrderedDict
(
)
fields
=
[
field
for
field
in
self
.
fields
.
values
()
if
not
field
.
write_only
]
for
field
in
fields
:
...
...
@@ -388,6 +388,19 @@ class Serializer(BaseSerializer):
return
NestedBoundField
(
field
,
value
,
error
)
return
BoundField
(
field
,
value
,
error
)
# Include a backlink to the serializer class on return objects.
# Allows renderers such as HTMLFormRenderer to get the full field info.
@property
def
data
(
self
):
ret
=
super
(
Serializer
,
self
)
.
data
return
ReturnDict
(
ret
,
serializer
=
self
)
@property
def
errors
(
self
):
ret
=
super
(
Serializer
,
self
)
.
errors
return
ReturnDict
(
ret
,
serializer
=
self
)
# There's some replication of `ListField` here,
# but that's probably better than obfuscating the call hierarchy.
...
...
@@ -410,7 +423,7 @@ class ListSerializer(BaseSerializer):
def
get_initial
(
self
):
if
self
.
_initial_data
is
not
None
:
return
self
.
to_representation
(
self
.
_initial_data
)
return
ReturnList
(
serializer
=
self
)
return
[]
def
get_value
(
self
,
dictionary
):
"""
...
...
@@ -438,7 +451,7 @@ class ListSerializer(BaseSerializer):
})
ret
=
[]
errors
=
ReturnList
(
serializer
=
self
)
errors
=
[]
for
item
in
data
:
try
:
...
...
@@ -459,10 +472,9 @@ class ListSerializer(BaseSerializer):
List of object instances -> List of dicts of primitive datatypes.
"""
iterable
=
data
.
all
()
if
(
hasattr
(
data
,
'all'
))
else
data
return
ReturnList
(
[
self
.
child
.
to_representation
(
item
)
for
item
in
iterable
],
serializer
=
self
)
return
[
self
.
child
.
to_representation
(
item
)
for
item
in
iterable
]
def
update
(
self
,
instance
,
validated_data
):
raise
NotImplementedError
(
...
...
@@ -503,6 +515,21 @@ class ListSerializer(BaseSerializer):
def
__repr__
(
self
):
return
representation
.
list_repr
(
self
,
indent
=
1
)
# Include a backlink to the serializer class on return objects.
# Allows renderers such as HTMLFormRenderer to get the full field info.
@property
def
data
(
self
):
ret
=
super
(
ListSerializer
,
self
)
.
data
return
ReturnList
(
ret
,
serializer
=
self
)
@property
def
errors
(
self
):
ret
=
super
(
ListSerializer
,
self
)
.
errors
if
isinstance
(
ret
,
dict
):
return
ReturnDict
(
ret
,
serializer
=
self
)
return
ReturnList
(
ret
,
serializer
=
self
)
# ModelSerializer & HyperlinkedModelSerializer
# --------------------------------------------
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment