diff options
| author | Devon Bleibtrey | 2015-03-23 11:40:33 -0400 | 
|---|---|---|
| committer | Devon Bleibtrey | 2015-03-23 11:40:33 -0400 | 
| commit | b1c1867b162c8eb9b7c2807029397d27a01ce19c (patch) | |
| tree | 66f74f6ecc4f0c251f9efa6113eddb8c57c01593 /rest_framework | |
| parent | 7ac3c3fff7ae029a331ae0b6c149ac5ab97357fc (diff) | |
| download | django-rest-framework-b1c1867b162c8eb9b7c2807029397d27a01ce19c.tar.bz2 | |
Swapping to hassattr logic for pk attribute references in relations
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/relations.py | 6 | 
1 files changed, 2 insertions, 4 deletions
| diff --git a/rest_framework/relations.py b/rest_framework/relations.py index 7483a939..00a4a265 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -166,7 +166,6 @@ class HyperlinkedRelatedField(RelatedField):          self.lookup_field = kwargs.pop('lookup_field', self.lookup_field)          self.lookup_url_kwarg = kwargs.pop('lookup_url_kwarg', self.lookup_field)          self.format = kwargs.pop('format', None) -        self.id_field = kwargs.pop('id_field', 'pk')          # We include this simply for dependency injection in tests.          # We can't add it as a class attributes or it would expect an @@ -197,7 +196,7 @@ class HyperlinkedRelatedField(RelatedField):          attributes are not configured to correctly match the URL conf.          """          # Unsaved objects will not yet have a valid URL. -        if getattr(obj, self.id_field) is None: +        if hasattr(obj, 'pk') and obj.pk is None:              return None          lookup_value = getattr(obj, self.lookup_field) @@ -341,7 +340,6 @@ class ManyRelatedField(Field):          assert child_relation is not None, '`child_relation` is a required argument.'          super(ManyRelatedField, self).__init__(*args, **kwargs)          self.child_relation.bind(field_name='', parent=self) -        self.id_field = kwargs.pop('id_field', 'pk')      def get_value(self, dictionary):          # We override the default field access in order to support @@ -363,7 +361,7 @@ class ManyRelatedField(Field):      def get_attribute(self, instance):          # Can't have any relationships if not created -        if getattr(instance, self.id_field) is None: +        if hasattr(instance, 'pk') and instance.pk is None:              return []          relationship = get_attribute(instance, self.source_attrs) | 
