#34267: Error with Union queryset not being paginable
-------------------------------+--------------------------------------
     Reporter:  rphlo          |                    Owner:  nobody
         Type:  Bug            |                   Status:  new
    Component:  Uncategorized  |                  Version:  4.2
     Severity:  Normal         |               Resolution:
     Keywords:                 |             Triage Stage:  Unreviewed
    Has patch:  0              |      Needs documentation:  0
  Needs tests:  0              |  Patch needs improvement:  0
Easy pickings:  0              |                    UI/UX:  0
-------------------------------+--------------------------------------
Description changed by rphlo:

Old description:

> I tried 4.2a1 today on my project and I noticed pagination was broken on
> one view.
>
> After little investigation I manage to reproduce an error:
>
> `Event` is a model with `set` a Foreignkey
> {{{
> >> events = Event.objects.all()
> >> events_without_set = events.filter(set__isnull=True)
> >> one_event_of_each_set = (
>         events.filter(set__isnull=False)
>                .order_by("set_id")
>                .distinct("set_id")
> )
> >> my_list = events_without_set.union(one_event_of_each_set)
> >> my_list.count()
> 212
> >> my_list[2]
> Traceback (most recent call last):
>   File "<console>", line 1, in <module>
>   File "/venv/lib/python3.11/site-packages/django/db/models/query.py",
> line 450, in __getitem__
>     return qs._result_cache[0]
>            ~~~~~~~~~~~~~~~~^^^
> IndexError: list index out of range
> }}}

New description:

 I tried 4.2a1 today on my project and I noticed pagination was broken on
 one view.

 After little investigation I manage to reproduce an error:

 `Event` is a model with `set` a Foreignkey
 {{{
 >> events = Event.objects.all()
 >> events_without_set = events.filter(set__isnull=True)
 >> one_event_of_each_set = (
         events.filter(set__isnull=False)
                .order_by("set_id")
                .distinct("set_id")
 )
 >> my_list = events_without_set.union(one_event_of_each_set)
 >> my_list.count()
 212
 >> my_list[2]
 Traceback (most recent call last):
   File "<console>", line 1, in <module>
   File "/venv/lib/python3.11/site-packages/django/db/models/query.py",
 line 450, in __getitem__
     return qs._result_cache[0]
            ~~~~~~~~~~~~~~~~^^^
 IndexError: list index out of range
 }}}

 With django 4.1.5 `my_list[2]` returns an event.

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34267#comment:1>
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/01070185c08d4b83-02f3931f-1280-4504-a487-82ca78e8b0d7-000000%40eu-central-1.amazonses.com.

Reply via email to