summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvangelos Foutras <foutrelis@gmail.com>2010-01-26 07:03:40 +0200
committerDan McGee <dan@archlinux.org>2010-01-30 13:08:44 -0600
commitf1047dd4b330d5f9011076f346422f2b322ada9f (patch)
tree0b7300319d26d56769446433933392297a40af6a
parentc58bcd5d77374bebad95c2a2157311a3098e60d7 (diff)
downloadarchweb-f1047dd4b330d5f9011076f346422f2b322ada9f.tar.gz
archweb-f1047dd4b330d5f9011076f346422f2b322ada9f.zip
Drastically reduce loading time of Todo lists
Use Django's select_related() on the TodolistPkg QuerySet to avoid making 4 database queries per package. This way we're making just one query, regardless of the number of packages in the Todo list. Local testing with 1000 entries in a Todo list show that the loading time has been reduced from 2675 ms to around 560 ms, while the number of queries has been cut down from 8005, to only 5. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--main/models.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/main/models.py b/main/models.py
index d65c8470..71b9e181 100644
--- a/main/models.py
+++ b/main/models.py
@@ -303,7 +303,7 @@ class Todolist(models.Model):
@property
def packages(self):
- return TodolistPkg.objects.filter(list=self.id).order_by('pkg')
+ return TodolistPkg.objects.select_related().filter(list=self).order_by('pkg')
@property
def package_names(self):