#35677: Unexpected behaviour of Prefetch with queryset filtering on a through 
model
-------------------------------------+-------------------------------------
     Reporter:  David Glenck         |                    Owner:  (none)
         Type:  Bug                  |                   Status:  new
    Component:  Database layer       |                  Version:  5.1
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:  Prefetch,            |             Triage Stage:  Accepted
  prefetch_related, many-to-many     |
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Comment (by Simon Charette):

 Thanks Natalia, #27303 is effectively a manifestation of this problem in
 the admin. We don't have a good way to denote that joins against multi-
 valued relationships should be reused between different `QuerySet` method
 calls. It's a problem we hacked around for `filter` with this ''sticky''
 notion but the problem exists for `annotate` and any other ORM method that
 allows for multi-valued (many-to-many or reverse one-to-many). I believe
 there are other tickets that discussed a generic way to alias such
 relationships so they are always reusable, I know it was brought up during
 the design of `FilteredRelation` for sure.

 IIRC the design was something along the lines of

 {{{#!python
 Subscriber.objects.alias(
     # Force the reuse of all JOINs up to Susbcription (including Status)
     subscriptions=Relation("subscriptions", reuse=True),
 ).filter(subscriber=subscriber).filter(status__is_active=True)
 }}}
-- 
Ticket URL: <https://code.djangoproject.com/ticket/35677#comment:7>
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/01070191569603ca-05723ce6-69a2-41ec-b503-3cbe17105c3f-000000%40eu-central-1.amazonses.com.

Reply via email to