summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorPaulo <commonzenpython@gmail.com>2017-08-14 17:27:25 -0400
committerTim Graham <timograham@gmail.com>2017-08-21 16:14:13 -0400
commitfea9cb46aacc73cabac883a806ccb7fdc1f979dd (patch)
treef4d58795bc081a7b8a36df4f2edf8478f77ed024 /django
parentb5ad5c628a0327c2208d76e5cacb3cb6f48750b5 (diff)
Fixed #28375 -- Fixed KeyError crash on reverse prefetch of a model with OneToOneField primary key to a non-pk field.
Diffstat (limited to 'django')
-rw-r--r--django/db/models/fields/related_descriptors.py9
1 files changed, 2 insertions, 7 deletions
diff --git a/django/db/models/fields/related_descriptors.py b/django/db/models/fields/related_descriptors.py
index d65af02f32..189e67fab7 100644
--- a/django/db/models/fields/related_descriptors.py
+++ b/django/db/models/fields/related_descriptors.py
@@ -63,8 +63,6 @@ and two directions (forward and reverse) for a total of six combinations.
``ReverseManyToManyDescriptor``, use ``ManyToManyDescriptor`` instead.
"""
-from operator import attrgetter
-
from django.db import connections, router, transaction
from django.db.models import Q, signals
from django.db.models.query import QuerySet
@@ -334,11 +332,8 @@ class ReverseOneToOneDescriptor:
queryset = self.get_queryset()
queryset._add_hints(instance=instances[0])
- rel_obj_attr = attrgetter(self.related.field.attname)
-
- def instance_attr(obj):
- return obj.pk
-
+ rel_obj_attr = self.related.field.get_local_related_value
+ instance_attr = self.related.field.get_foreign_related_value
instances_dict = {instance_attr(inst): inst for inst in instances}
query = {'%s__in' % self.related.field.name: instances}
queryset = queryset.filter(**query)