#28723: RelatedManager.get_prefetch_queryset returns "wrong" cache_name -------------------------------------+------------------------------------- Reporter: Mike | Owner: nobody Hansen | Type: | Status: new Uncategorized | Component: Database | Version: master layer (models, ORM) | Severity: Normal | Keywords: Triage Stage: | Has patch: 0 Unreviewed | Needs documentation: 0 | Needs tests: 0 Patch needs improvement: 0 | Easy pickings: 0 UI/UX: 0 | -------------------------------------+------------------------------------- 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`, {{{#!python 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. -- Ticket URL: <https://code.djangoproject.com/ticket/28723> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/051.73416c10f42becc141cb2371e8260a3c%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.