diff options
| author | Tom Christie | 2013-08-23 14:06:14 +0100 |
|---|---|---|
| committer | Tom Christie | 2013-08-23 14:06:14 +0100 |
| commit | e03854ba6a74428675c40d469a7768cc5131035f (patch) | |
| tree | 4f65e56adf3582a9801a044409022c5f90eabd00 | |
| parent | 315435d00ae6bcdab3a4f3a6e7128e2d1ea92b0d (diff) | |
| download | django-rest-framework-e03854ba6a74428675c40d469a7768cc5131035f.tar.bz2 | |
Tweaks to display nested data in empty serializers
| -rw-r--r-- | rest_framework/relations.py | 9 | ||||
| -rw-r--r-- | rest_framework/serializers.py | 4 |
2 files changed, 9 insertions, 4 deletions
diff --git a/rest_framework/relations.py b/rest_framework/relations.py index edaf76d6..7408758e 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -134,9 +134,9 @@ class RelatedField(WritableField): value = obj for component in source.split('.'): - value = get_component(value, component) if value is None: break + value = get_component(value, component) except ObjectDoesNotExist: return None @@ -567,8 +567,13 @@ class HyperlinkedIdentityField(Field): May raise a `NoReverseMatch` if the `view_name` and `lookup_field` 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} + + # Handle unsaved object case + if lookup_field is None: + return None + try: return reverse(view_name, kwargs=kwargs, request=request, format=format) except NoReverseMatch: diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 2b260c25..22525964 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -338,9 +338,9 @@ class BaseSerializer(WritableField): value = obj for component in source.split('.'): - value = get_component(value, component) if value is None: - break + return self.to_native(None) + value = get_component(value, component) except ObjectDoesNotExist: return None |
