mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-20 13:30:59 +03:00
Have Serializer.serialize take a generic **kwargs dict, and BaseResource.serialize take a request.
This commit is contained in:
parent
239d8c6c4d
commit
ef952c9b05
|
@ -33,6 +33,16 @@ class BaseResource(Serializer):
|
|||
"""
|
||||
return self.serialize(obj)
|
||||
|
||||
def serialize(self, obj, request=None, **kwargs):
|
||||
"""
|
||||
Convert the resource into a serializable representation.
|
||||
"""
|
||||
# Request from related serializer.
|
||||
if request is not None:
|
||||
self.request = request
|
||||
|
||||
return super(BaseResource, self).serialize(obj, request=request, **kwargs)
|
||||
|
||||
|
||||
class Resource(BaseResource):
|
||||
"""
|
||||
|
|
|
@ -96,7 +96,7 @@ class Serializer(object):
|
|||
"""
|
||||
The maximum depth to serialize to, or `None`.
|
||||
"""
|
||||
|
||||
|
||||
parent = None
|
||||
"""
|
||||
A reference to the root serializer when descending down into fields.
|
||||
|
@ -169,7 +169,7 @@ class Serializer(object):
|
|||
"""
|
||||
return self.rename.get(smart_str(key), smart_str(key))
|
||||
|
||||
def serialize_val(self, key, obj, related_info):
|
||||
def serialize_val(self, key, obj, related_info, **kwargs):
|
||||
"""
|
||||
Convert a model field or dict value into a serializable representation.
|
||||
"""
|
||||
|
@ -189,7 +189,7 @@ class Serializer(object):
|
|||
stack.append(obj)
|
||||
|
||||
return related_serializer(depth=depth, stack=stack).serialize(
|
||||
obj, request=getattr(self, 'request', None))
|
||||
obj, **kwargs)
|
||||
|
||||
def serialize_max_depth(self, obj):
|
||||
"""
|
||||
|
@ -205,7 +205,7 @@ class Serializer(object):
|
|||
"""
|
||||
raise _SkipField
|
||||
|
||||
def serialize_model(self, instance):
|
||||
def serialize_model(self, instance, **kwargs):
|
||||
"""
|
||||
Given a model instance or dict, serialize it to a dict..
|
||||
"""
|
||||
|
@ -232,7 +232,7 @@ class Serializer(object):
|
|||
continue
|
||||
|
||||
key = self.serialize_key(fname)
|
||||
val = self.serialize_val(fname, obj, related_info)
|
||||
val = self.serialize_val(fname, obj, related_info, **kwargs)
|
||||
data[key] = val
|
||||
except _SkipField:
|
||||
pass
|
||||
|
@ -263,18 +263,14 @@ class Serializer(object):
|
|||
"""
|
||||
return smart_unicode(obj, strings_only=True)
|
||||
|
||||
def serialize(self, obj, request=None):
|
||||
def serialize(self, obj, **kwargs):
|
||||
"""
|
||||
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)
|
||||
return self.serialize_model(obj, **kwargs)
|
||||
elif isinstance(obj, (tuple, list, set, QuerySet, RawQuerySet, types.GeneratorType)):
|
||||
# basic iterables
|
||||
return self.serialize_iter(obj)
|
||||
|
|
Loading…
Reference in New Issue
Block a user