id,summary,reporter,owner,description,type,status,component,version,severity,resolution,keywords,cc,stage,has_patch,needs_docs,needs_tests,needs_better_patch,easy,ui_ux 26211,prefetch_related with Prefetch with queryset with explicit Ordering Ignored,Alex Rothberg,nobody,"Given these models: {{{ class Parent(models.Model): pass class Child(models.Model): saved_dt = models.DateTimeField(auto_now_add=True) parent = models.ForeignKey(Parent) }}} I am executing this query (for each `Parent` I want to get the `child_set` in sorted order): {{{ [m.child_set.order_by('saved_dt') for m in Parent.objects.prefetch_related(Prefetch('child_set', Child.objects.order_by('saved_dt'))).all()] }}} I would expect that to be two SQL queries, but in reality I see `N+2` where `N` is the number of `Child`s: {{{ SELECT ""prefetch_parent"".""id"" FROM ""prefetch_parent""; args=() SELECT ""prefetch_child"".""id"", ""prefetch_child"".""saved_dt"", ""prefetch_child"".""parent_id"" FROM ""prefetch_child"" WHERE ""prefetch_child"".""parent_id"" IN (1, 2) ORDER BY ""prefetch_child"".""saved_dt"" ASC; args=(1, 2) SELECT ""prefetch_child"".""id"", ""prefetch_child"".""saved_dt"", ""prefetch_child"".""parent_id"" FROM ""prefetch_child"" WHERE ""prefetch_child"".""parent_id"" = 1 ORDER BY ""prefetch_child"".""saved_dt"" ASC LIMIT 21; args=(1,) SELECT ""prefetch_child"".""id"", ""prefetch_child"".""saved_dt"", ""prefetch_child"".""parent_id"" FROM ""prefetch_child"" WHERE ""prefetch_child"".""parent_id"" = 2 ORDER BY ""prefetch_child"".""saved_dt"" ASC LIMIT 21; args=(2,) }}}",New feature,closed,"Database layer (models, ORM)",1.9,Normal,wontfix,,,Unreviewed,0,0,0,0,0,0