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
9c92f96c
Commit
9c92f96c
authored
Feb 23, 2012
by
Shawn Lewis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix for #178.
Related serializers passed in via include now work as expected.
parent
98c16e6d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
22 deletions
+7
-22
djangorestframework/serializer.py
+7
-22
No files found.
djangorestframework/serializer.py
View file @
9c92f96c
...
...
@@ -25,16 +25,9 @@ def _field_to_tuple(field):
def
_fields_to_list
(
fields
):
"""
Return a list of field
nam
es.
Return a list of field
tupl
es.
"""
return
[
_field_to_tuple
(
field
)[
0
]
for
field
in
fields
or
()]
def
_fields_to_dict
(
fields
):
"""
Return a `dict` of field name -> None, or tuple of fields, or Serializer class
"""
return
dict
([
_field_to_tuple
(
field
)
for
field
in
fields
or
()])
return
[
_field_to_tuple
(
field
)
for
field
in
fields
or
()]
class
_SkipField
(
Exception
):
...
...
@@ -110,9 +103,6 @@ class Serializer(object):
self
.
stack
=
stack
def
get_fields
(
self
,
obj
):
"""
Return the set of field names/keys to use for a model instance/dict.
"""
fields
=
self
.
fields
# If `fields` is not set, we use the default fields and modify
...
...
@@ -123,9 +113,6 @@ class Serializer(object):
exclude
=
self
.
exclude
or
()
fields
=
set
(
default
+
list
(
include
))
-
set
(
exclude
)
else
:
fields
=
_fields_to_list
(
self
.
fields
)
return
fields
def
get_default_fields
(
self
,
obj
):
...
...
@@ -139,9 +126,7 @@ class Serializer(object):
else
:
return
obj
.
keys
()
def
get_related_serializer
(
self
,
key
):
info
=
_fields_to_dict
(
self
.
fields
)
.
get
(
key
,
None
)
def
get_related_serializer
(
self
,
info
):
# If an element in `fields` is a 2-tuple of (str, tuple)
# then the second element of the tuple is the fields to
# set on the related serializer
...
...
@@ -175,11 +160,11 @@ class Serializer(object):
"""
return
self
.
rename
.
get
(
smart_str
(
key
),
smart_str
(
key
))
def
serialize_val
(
self
,
key
,
obj
):
def
serialize_val
(
self
,
key
,
obj
,
related_info
):
"""
Convert a model field or dict value into a serializable representation.
"""
related_serializer
=
self
.
get_related_serializer
(
key
)
related_serializer
=
self
.
get_related_serializer
(
related_info
)
if
self
.
depth
is
None
:
depth
=
None
...
...
@@ -219,7 +204,7 @@ class Serializer(object):
fields
=
self
.
get_fields
(
instance
)
# serialize each required field
for
fname
in
fields
:
for
fname
,
related_info
in
_fields_to_list
(
fields
)
:
try
:
# we first check for a method 'fname' on self,
# 'fname's signature must be 'def fname(self, instance)'
...
...
@@ -237,7 +222,7 @@ class Serializer(object):
continue
key
=
self
.
serialize_key
(
fname
)
val
=
self
.
serialize_val
(
fname
,
obj
)
val
=
self
.
serialize_val
(
fname
,
obj
,
related_info
)
data
[
key
]
=
val
except
_SkipField
:
pass
...
...
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