Commit e03854ba by Tom Christie

Tweaks to display nested data in empty serializers

parent 315435d0
...@@ -134,9 +134,9 @@ class RelatedField(WritableField): ...@@ -134,9 +134,9 @@ class RelatedField(WritableField):
value = obj value = obj
for component in source.split('.'): for component in source.split('.'):
value = get_component(value, component)
if value is None: if value is None:
break break
value = get_component(value, component)
except ObjectDoesNotExist: except ObjectDoesNotExist:
return None return None
...@@ -567,8 +567,13 @@ class HyperlinkedIdentityField(Field): ...@@ -567,8 +567,13 @@ class HyperlinkedIdentityField(Field):
May raise a `NoReverseMatch` if the `view_name` and `lookup_field` May raise a `NoReverseMatch` if the `view_name` and `lookup_field`
attributes are not configured to correctly match the URL conf. attributes are not configured to correctly match the URL conf.
""" """
lookup_field = getattr(obj, self.lookup_field) lookup_field = getattr(obj, self.lookup_field, None)
kwargs = {self.lookup_field: lookup_field} kwargs = {self.lookup_field: lookup_field}
# Handle unsaved object case
if lookup_field is None:
return None
try: try:
return reverse(view_name, kwargs=kwargs, request=request, format=format) return reverse(view_name, kwargs=kwargs, request=request, format=format)
except NoReverseMatch: except NoReverseMatch:
......
...@@ -338,9 +338,9 @@ class BaseSerializer(WritableField): ...@@ -338,9 +338,9 @@ class BaseSerializer(WritableField):
value = obj value = obj
for component in source.split('.'): for component in source.split('.'):
value = get_component(value, component)
if value is None: if value is None:
break return self.to_native(None)
value = get_component(value, component)
except ObjectDoesNotExist: except ObjectDoesNotExist:
return None return None
......
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