Skip to content

Commit 628883a

Browse files
committed
N+1 Query fix for Virtual Expo
1 parent 22bd71f commit 628883a

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

corpus/virtual_expo/views.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
from accounts.models import ExecutiveMember
2-
from config.models import SIG
32
from django.db.models import Count
43
from django.shortcuts import get_object_or_404
54
from django.shortcuts import render
65
from virtual_expo.forms import ReportFilterForm
76
from virtual_expo.models import Report
87
from virtual_expo.models import ReportMember
9-
from virtual_expo.models import ReportType
108

119
from corpus.decorators import ensure_exec_membership
1210

@@ -27,25 +25,30 @@ def home(request):
2725

2826

2927
def reports_by_year(request, year):
30-
reports = Report.objects.filter(year=year, approved=True).order_by("-pk")
28+
reports = (
29+
Report.objects.filter(year=year, approved=True)
30+
.select_related("report_type")
31+
.prefetch_related("reportmember_set__member__sig")
32+
.order_by("-pk")
33+
)
3134

3235
form = ReportFilterForm(request.GET)
3336
if form.is_valid():
3437
report_type = int(form.cleaned_data.get("report_type"))
3538
if report_type != 0:
36-
reports = reports.filter(report_type=ReportType.objects.get(pk=report_type))
39+
reports = reports.filter(report_type_id=report_type)
3740

3841
sig = int(form.cleaned_data.get("sig"))
3942
if sig == -1:
4043
reports = reports.annotate(
4144
sig_count=Count("reportmember__member__sig", distinct=True)
4245
).filter(sig_count__gte=2)
4346
elif sig != 0:
44-
reports = reports.filter(reportmember__member__sig=SIG.objects.get(pk=sig))
47+
reports = reports.filter(reportmember__member__sig_id=sig)
4548

4649
reports = reports.distinct()
47-
args = {"reports": reports, "year": year, "form": form}
4850

51+
args = {"reports": reports, "year": year, "form": form}
4952
return render(request, "virtual_expo/reports_by_year.html", args)
5053

5154

0 commit comments

Comments
 (0)