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 <metepolat2000@gmail.com>
Signed-off-by: Stephen Finucane <stephen@that.guru>
Closes: #335
(backported from commit
ec00daae4d79bf2560034e1b2bc3cf76a98a3212
dropped all the tests, they clash horribly)
Signed-off-by: Daniel Axtens <dja@axtens.net>
ordering = 'id'
def get_queryset(self):
- return CoverLetter.objects.all().prefetch_related('series')\
+ return CoverLetter.objects.all().prefetch_related('series',
+ 'series__project')\
.select_related('project', 'submitter')\
.defer('content', 'headers')
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')
def get_queryset(self):
return Patch.objects.all()\
- .prefetch_related('series', 'check_set')\
- .select_related('project', 'state', 'submitter', 'delegate')\
+ .prefetch_related('series', 'check_set', 'series__project')\
+ .select_related('project', 'state', 'submitter', 'delegate',
+ )\
.defer('content', 'diff', 'headers')
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):