[arch-general] [PATCH] Drastically reduce loading time of Todo lists

Evangelos Foutras foutrelis at gmail.com
Tue Jan 26 00:03:40 EST 2010


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.
---
 main/models.py |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/main/models.py b/main/models.py
index f645804..1b08e1e 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):
-- 
1.6.6.1



More information about the arch-general mailing list