From f8b71b604c6dfc6ddd779bc3ce0059f6f8f24505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Delobelle?= Date: Thu, 6 Apr 2017 18:42:00 +0200 Subject: [PATCH] Fewer db accesses on transfers list view. - Add select_related for `from_acc`, `to_acc` and `group.valid_by`. - 2 requests instead of (3 * #transfers) --- kfet/views.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/kfet/views.py b/kfet/views.py index ebe169ca..c296d3b3 100644 --- a/kfet/views.py +++ b/kfet/views.py @@ -1477,19 +1477,32 @@ class SettingsUpdate(SuccessMessageMixin, UpdateView): Settings.empty_cache() return super(SettingsUpdate, self).form_valid(form) + # ----- # Transfer views # ----- @teamkfet_required def transfers(request): - transfergroups = (TransferGroup.objects - .prefetch_related('transfers') - .order_by('-at')) + transfers_pre = Prefetch( + 'transfers', + queryset=( + Transfer.objects + .select_related('from_acc', 'to_acc') + ), + ) + + transfergroups = ( + TransferGroup.objects + .select_related('valid_by') + .prefetch_related(transfers_pre) + .order_by('-at') + ) return render(request, 'kfet/transfers.html', { 'transfergroups': transfergroups, }) + @teamkfet_required def transfers_create(request): transfer_formset = TransferFormSet(queryset=Transfer.objects.none())