Opened 7 years ago

Last modified 6 years ago

#28723 closed Bug

RelatedManager.get_prefetch_queryset returns "wrong" cache_name — at Initial Version

Reported by: Mike Hansen Owned by: nobody
Component: Database layer (models, ORM) Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Currently, RelatedManager.get_prefetch_queryset returns self.field.related_query_name() as the cache_name. In the case where no related_name has been set on the ForeignKey, then this does not match with the through_attr used by get_prefetcher.

Using the models in tests/prefetch_related/models.py,

BookWithYear.objects.prefetch_related('bookreview_set')

will use a through_attr of bookreview_set, but bookreview is what will be placed in _prefetched_objects_cache.

I think related_manager.field.remote_field.get_accessor_name() should be used instead.

I'll post a patch fixing this and adding a test case.

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top