diff options
author | Evangelos Foutras <foutrelis@gmail.com> | 2010-01-26 07:03:40 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2010-01-30 13:08:44 -0600 |
commit | f1047dd4b330d5f9011076f346422f2b322ada9f (patch) | |
tree | 0b7300319d26d56769446433933392297a40af6a | |
parent | c58bcd5d77374bebad95c2a2157311a3098e60d7 (diff) |
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.py | 2 |
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): |