aboutsummaryrefslogtreecommitdiffstats
path: root/djangorestframework/serializer.py
diff options
context:
space:
mode:
authorSean C. Farley2012-06-26 19:27:57 -0400
committerSean C. Farley2012-06-26 19:27:57 -0400
commit1b49c5e3e5c1b33d8d4c2dcaaaf6cb4dcbffa814 (patch)
tree40454f839a72af373b930ee9a00950e33d359c10 /djangorestframework/serializer.py
parent9dbaac3182aa8e5c322e25513cd2e3d2bf0af1e2 (diff)
downloaddjango-rest-framework-1b49c5e3e5c1b33d8d4c2dcaaaf6cb4dcbffa814.tar.bz2
Pass request to related serializers
Related serializers may need access to the request to properly serialize a child resource. For example, reverse() in djangorestframework.reverse uses request if available to return an absolute URL. While the parent resource has access to the request to generate the absolute URL, the child resource does not.
Diffstat (limited to 'djangorestframework/serializer.py')
-rw-r--r--djangorestframework/serializer.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/djangorestframework/serializer.py b/djangorestframework/serializer.py
index 9481eeff..ffe9d8cb 100644
--- a/djangorestframework/serializer.py
+++ b/djangorestframework/serializer.py
@@ -179,7 +179,8 @@ class Serializer(object):
stack = self.stack[:]
stack.append(obj)
- return related_serializer(depth=depth, stack=stack).serialize(obj)
+ return related_serializer(depth=depth, stack=stack).serialize(
+ obj, request=self.request)
def serialize_max_depth(self, obj):
"""
@@ -253,11 +254,15 @@ class Serializer(object):
"""
return smart_unicode(obj, strings_only=True)
- def serialize(self, obj):
+ def serialize(self, obj, request=None):
"""
Convert any object into a serializable representation.
"""
+ # Request from related serializer.
+ if request is not None:
+ self.request = request
+
if isinstance(obj, (dict, models.Model)):
# Model instances & dictionaries
return self.serialize_model(obj)