diff mbox series

admin: Configure 'list_select_related', 'get_queryset'

Message ID 20180912215739.22074-1-stephen@that.guru
State Accepted
Headers show
Series admin: Configure 'list_select_related', 'get_queryset' | expand

Commit Message

Stephen Finucane Sept. 12, 2018, 9:57 p.m. UTC
This has a significant improvement for the patch and series views.

  /patchwork/patch
    FROM: ~114 queries
    TO: ~14 queries

  /patchwork/series
    FROM: ~210 queries
    TO: ~10 queries

Signed-off-by: Stephen Finucane <stephen@that.guru>
---
 patchwork/admin.py | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Stephen Finucane Sept. 19, 2018, 9:49 p.m. UTC | #1
On Wed, 2018-09-12 at 15:57 -0600, Stephen Finucane wrote:
> This has a significant improvement for the patch and series views.
> 
>   /patchwork/patch
>     FROM: ~114 queries
>     TO: ~14 queries
> 
>   /patchwork/series
>     FROM: ~210 queries
>     TO: ~10 queries
> 
> Signed-off-by: Stephen Finucane <stephen@that.guru>

This is an easy win and is currently annoying me, so I've gone ahead
and applied it.

Stephen
diff mbox series

Patch

diff --git a/patchwork/admin.py b/patchwork/admin.py
index 133872ac..1a2c0370 100644
--- a/patchwork/admin.py
+++ b/patchwork/admin.py
@@ -105,6 +105,7 @@  class PatchAdmin(admin.ModelAdmin):
     list_display = ('name', 'submitter', 'project', 'state', 'date',
                     'archived', 'is_pull_request')
     list_filter = ('project', 'state', 'archived')
+    list_select_related = ('submitter', 'project', 'state')
     search_fields = ('name', 'submitter__name', 'submitter__email')
     date_hierarchy = 'date'
 
@@ -145,6 +146,10 @@  class SeriesAdmin(admin.ModelAdmin):
         return series.received_all
     received_all.boolean = True
 
+    def get_queryset(self, request):
+        qs = super(SeriesAdmin, self).get_queryset(request)
+        return qs.prefetch_related('patches',)
+
 
 admin.site.register(Series, SeriesAdmin)