]> git.ipfire.org Git - thirdparty/patchwork.git/commitdiff
admin: Configure 'list_select_related', 'get_queryset'
authorStephen Finucane <stephen@that.guru>
Wed, 12 Sep 2018 21:57:39 +0000 (15:57 -0600)
committerStephen Finucane <stephen@that.guru>
Wed, 19 Sep 2018 21:48:09 +0000 (22:48 +0100)
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

index c70d106e7c2a4526f6d8503830b2c4fb65364896..f12b33875b612e859e2d3e042f3d271287fe4669 100644 (file)
@@ -89,6 +89,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'
 
@@ -129,6 +130,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)