diff options
| author | Tom Christie | 2013-08-30 09:28:33 +0100 | 
|---|---|---|
| committer | Tom Christie | 2013-08-30 09:28:33 +0100 | 
| commit | 9a5b2eefa92dede844ab94d049093e91ac98af5b (patch) | |
| tree | faf389e2f8c8296aeaa486ab97ed0be9113cc2ba /rest_framework/relations.py | |
| parent | bf07b8e616bd92e4ae3c2c09b198181d7075e6bd (diff) | |
| parent | f3ab0b2b1d5734314dbe3cdd13cd7c4f0531bf7d (diff) | |
| download | django-rest-framework-9a5b2eefa92dede844ab94d049093e91ac98af5b.tar.bz2 | |
Merge master
Diffstat (limited to 'rest_framework/relations.py')
| -rw-r--r-- | rest_framework/relations.py | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/rest_framework/relations.py b/rest_framework/relations.py index f1f7dea7..417925b5 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -126,9 +126,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 @@ -236,6 +236,8 @@ class PrimaryKeyRelatedField(RelatedField):                  source = self.source or field_name                  queryset = obj                  for component in source.split('.'): +                    if queryset is None: +                        return []                      queryset = get_component(queryset, component)              # Forward relationship @@ -556,8 +558,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: | 
