aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework
diff options
context:
space:
mode:
authorDevon Bleibtrey2015-03-23 11:40:33 -0400
committerDevon Bleibtrey2015-03-23 11:40:33 -0400
commitb1c1867b162c8eb9b7c2807029397d27a01ce19c (patch)
tree66f74f6ecc4f0c251f9efa6113eddb8c57c01593 /rest_framework
parent7ac3c3fff7ae029a331ae0b6c149ac5ab97357fc (diff)
downloaddjango-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.py6
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)