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):
...
@@ -245,18 +245,18 @@ class Serializer(BaseSerializer):
def
get_initial
(
self
):
def
get_initial
(
self
):
if
self
.
_initial_data
is
not
None
:
if
self
.
_initial_data
is
not
None
:
return
Return
Dict
([
return
Ordered
Dict
([
(
field_name
,
field
.
get_value
(
self
.
_initial_data
))
(
field_name
,
field
.
get_value
(
self
.
_initial_data
))
for
field_name
,
field
in
self
.
fields
.
items
()
for
field_name
,
field
in
self
.
fields
.
items
()
if
field
.
get_value
(
self
.
_initial_data
)
is
not
empty
if
field
.
get_value
(
self
.
_initial_data
)
is
not
empty
and
not
field
.
read_only
and
not
field
.
read_only
]
,
serializer
=
self
)
])
return
Return
Dict
([
return
Ordered
Dict
([
(
field
.
field_name
,
field
.
get_initial
())
(
field
.
field_name
,
field
.
get_initial
())
for
field
in
self
.
fields
.
values
()
for
field
in
self
.
fields
.
values
()
if
not
field
.
read_only
if
not
field
.
read_only
]
,
serializer
=
self
)
])
def
get_value
(
self
,
dictionary
):
def
get_value
(
self
,
dictionary
):
# We override the default field access in order to support
# We override the default field access in order to support
...
@@ -319,8 +319,8 @@ class Serializer(BaseSerializer):
...
@@ -319,8 +319,8 @@ class Serializer(BaseSerializer):
"""
"""
Dict of native values <- Dict of primitive datatypes.
Dict of native values <- Dict of primitive datatypes.
"""
"""
ret
=
{}
ret
=
OrderedDict
()
errors
=
ReturnDict
(
serializer
=
self
)
errors
=
OrderedDict
(
)
fields
=
[
fields
=
[
field
for
field
in
self
.
fields
.
values
()
field
for
field
in
self
.
fields
.
values
()
if
(
not
field
.
read_only
)
or
(
field
.
default
is
not
empty
)
if
(
not
field
.
read_only
)
or
(
field
.
default
is
not
empty
)
...
@@ -349,7 +349,7 @@ class Serializer(BaseSerializer):
...
@@ -349,7 +349,7 @@ class Serializer(BaseSerializer):
"""
"""
Object instance -> Dict of primitive datatypes.
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
]
fields
=
[
field
for
field
in
self
.
fields
.
values
()
if
not
field
.
write_only
]
for
field
in
fields
:
for
field
in
fields
:
...
@@ -388,6 +388,19 @@ class Serializer(BaseSerializer):
...
@@ -388,6 +388,19 @@ class Serializer(BaseSerializer):
return
NestedBoundField
(
field
,
value
,
error
)
return
NestedBoundField
(
field
,
value
,
error
)
return
BoundField
(
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,
# There's some replication of `ListField` here,
# but that's probably better than obfuscating the call hierarchy.
# but that's probably better than obfuscating the call hierarchy.
...
@@ -410,7 +423,7 @@ class ListSerializer(BaseSerializer):
...
@@ -410,7 +423,7 @@ class ListSerializer(BaseSerializer):
def
get_initial
(
self
):
def
get_initial
(
self
):
if
self
.
_initial_data
is
not
None
:
if
self
.
_initial_data
is
not
None
:
return
self
.
to_representation
(
self
.
_initial_data
)
return
self
.
to_representation
(
self
.
_initial_data
)
return
ReturnList
(
serializer
=
self
)
return
[]
def
get_value
(
self
,
dictionary
):
def
get_value
(
self
,
dictionary
):
"""
"""
...
@@ -438,7 +451,7 @@ class ListSerializer(BaseSerializer):
...
@@ -438,7 +451,7 @@ class ListSerializer(BaseSerializer):
})
})
ret
=
[]
ret
=
[]
errors
=
ReturnList
(
serializer
=
self
)
errors
=
[]
for
item
in
data
:
for
item
in
data
:
try
:
try
:
...
@@ -459,10 +472,9 @@ class ListSerializer(BaseSerializer):
...
@@ -459,10 +472,9 @@ class ListSerializer(BaseSerializer):
List of object instances -> List of dicts of primitive datatypes.
List of object instances -> List of dicts of primitive datatypes.
"""
"""
iterable
=
data
.
all
()
if
(
hasattr
(
data
,
'all'
))
else
data
iterable
=
data
.
all
()
if
(
hasattr
(
data
,
'all'
))
else
data
return
ReturnList
(
return
[
[
self
.
child
.
to_representation
(
item
)
for
item
in
iterable
],
self
.
child
.
to_representation
(
item
)
for
item
in
iterable
serializer
=
self
]
)
def
update
(
self
,
instance
,
validated_data
):
def
update
(
self
,
instance
,
validated_data
):
raise
NotImplementedError
(
raise
NotImplementedError
(
...
@@ -503,6 +515,21 @@ class ListSerializer(BaseSerializer):
...
@@ -503,6 +515,21 @@ class ListSerializer(BaseSerializer):
def
__repr__
(
self
):
def
__repr__
(
self
):
return
representation
.
list_repr
(
self
,
indent
=
1
)
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
# 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