#24766: annotation with Q object filters results
-------------------------------------+-------------------------------------
Reporter: karyon | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 1.8
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Grafumbly):
* status: closed => new
* resolution: fixed =>
Comment:
This bug still occurs if you've got more than one annotation on the same
table.
Say you've got 3 Pizza objects having an m2m with Toppings. One pizza has
pepperoni, one mushrooms, and one is just plain cheese with no toppings.
Single annotation:
{{{
$> annotations = {
'pepperoni_ct': Count(Case(When(toppings__name='pepperoni',
then='toppings')))
}
$> Pizza.objects.annotate(**annotations).count()
3
}}}
We correctly promote the join to OUTER and get all three Pizza objects.
But now with two annotations:
{{{
$> annotations = {
'pepperoni_ct': Count(Case(When(toppings__name='pepperoni',
then='toppings')))
'mushroom_ct': Count(Case(When(toppings__name='mushrooms',
then='toppings')))
}
$> Pizza.objects.annotate(**annotations).count()
2
}}}
The join is not promoted and we only get two Pizza objects.
--
Ticket URL: <https://code.djangoproject.com/ticket/24766#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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/064.556acfdcfe208431fd36e3a10e6a4edb%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.