diff options
| author | Paulo <commonzenpython@gmail.com> | 2017-08-14 17:27:25 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-08-21 16:14:13 -0400 |
| commit | fea9cb46aacc73cabac883a806ccb7fdc1f979dd (patch) | |
| tree | f4d58795bc081a7b8a36df4f2edf8478f77ed024 /django | |
| parent | b5ad5c628a0327c2208d76e5cacb3cb6f48750b5 (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.py | 9 |
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) |
