On Wed, 2020-01-29 at 20:01 +0100, Mete Polat wrote: > Eliminates duplicate project queries caused by calling > get_absolute_url() in the embedded serializers. Following foreign keys > with 'series__project' will cache the project of the series as well as > the series itself. > > Signed-off-by: Mete Polat <metepolat2...@gmail.com>
Hey Mete, > --- > There are still some duplicates in various /api/ views but it looks like > those are caused by the REST framework itself. > > patchwork/api/cover.py | 2 +- > patchwork/api/event.py | 4 ++-- > patchwork/api/patch.py | 2 +- > patchwork/api/series.py | 5 +++-- > 4 files changed, 7 insertions(+), 6 deletions(-) > > diff --git a/patchwork/api/cover.py b/patchwork/api/cover.py > index caf9a386efa5..9e86d47e00e5 100644 > --- a/patchwork/api/cover.py > +++ b/patchwork/api/cover.py > @@ -101,7 +101,7 @@ class CoverLetterList(ListAPIView): > > def get_queryset(self): > return CoverLetter.objects.all()\ > - .select_related('project', 'submitter', 'series')\ > + .select_related('project', 'submitter', 'series__project')\ > .defer('content', 'headers') > > > diff --git a/patchwork/api/event.py b/patchwork/api/event.py > index a066faaec63b..fdff6a4f2fa6 100644 > --- a/patchwork/api/event.py > +++ b/patchwork/api/event.py > @@ -86,7 +86,7 @@ class EventList(ListAPIView): > > def get_queryset(self): > return Event.objects.all()\ > - .prefetch_related('project', 'patch', 'series', 'cover', > - 'previous_state', 'current_state', > + .prefetch_related('project', 'patch__project', 'series__project', > + 'cover', 'previous_state', 'current_state', > 'previous_delegate', 'current_delegate', > 'created_check') The rest of these look good but I wasn't able to produce a test that proved this particular change was doing anything. Are you sure this particular change works and, if so, could you suggest one or more scenarios that I could use to validate this? Cheers, Stephen > diff --git a/patchwork/api/patch.py b/patchwork/api/patch.py > index a29a1ab0eb71..1a3ce9057490 100644 > --- a/patchwork/api/patch.py > +++ b/patchwork/api/patch.py > @@ -176,7 +176,7 @@ class PatchList(ListAPIView): > return Patch.objects.all()\ > .prefetch_related('check_set')\ > .select_related('project', 'state', 'submitter', 'delegate', > - 'series')\ > + 'series__project')\ > .defer('content', 'diff', 'headers') > > > diff --git a/patchwork/api/series.py b/patchwork/api/series.py > index f7bb8c06a6c9..df28f95dab1b 100644 > --- a/patchwork/api/series.py > +++ b/patchwork/api/series.py > @@ -55,8 +55,9 @@ class SeriesMixin(object): > serializer_class = SeriesSerializer > > def get_queryset(self): > - return Series.objects.all().prefetch_related('patches',)\ > - .select_related('submitter', 'cover_letter', 'project') > + return Series.objects.all()\ > + .prefetch_related('patches__project',)\ > + .select_related('submitter', 'cover_letter__project', 'project') > > > class SeriesList(SeriesMixin, ListAPIView): _______________________________________________ Patchwork mailing list Patchwork@lists.ozlabs.org https://lists.ozlabs.org/listinfo/patchwork