Commit 1b49c5e3 by Sean C. Farley

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.
parent 9dbaac31
...@@ -179,7 +179,8 @@ class Serializer(object): ...@@ -179,7 +179,8 @@ class Serializer(object):
stack = self.stack[:] stack = self.stack[:]
stack.append(obj) 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): def serialize_max_depth(self, obj):
""" """
...@@ -253,11 +254,15 @@ class Serializer(object): ...@@ -253,11 +254,15 @@ class Serializer(object):
""" """
return smart_unicode(obj, strings_only=True) return smart_unicode(obj, strings_only=True)
def serialize(self, obj): def serialize(self, obj, request=None):
""" """
Convert any object into a serializable representation. 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)): if isinstance(obj, (dict, models.Model)):
# Model instances & dictionaries # Model instances & dictionaries
return self.serialize_model(obj) return self.serialize_model(obj)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment