From 9f9c94c983aff96d44a20ef36bfc0ccb9bd22697 Mon Sep 17 00:00:00 2001 From: Ilan Date: Sun, 19 Jul 2015 12:26:10 +0200 Subject: [PATCH] decoding values_list on a picklefield turns out to be 10 times faster than using list_comprehension --- django_q/models.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/django_q/models.py b/django_q/models.py index 78b4ed4..2f121de 100644 --- a/django_q/models.py +++ b/django_q/models.py @@ -8,6 +8,7 @@ from django.db.models.signals import pre_save from django.dispatch import receiver from django.utils import timezone from picklefield import PickledObjectField +from picklefield.fields import dbsafe_decode class Task(models.Model): @@ -32,8 +33,9 @@ class Task(models.Model): @staticmethod def get_result_group(group_id): - # values_list() doesn't work here cause it returns encoded fields - return [t.result for t in Task.get_task_group(group_id)] + # values + decode is 10 times faster than just list comprehension + values = Task.objects.filter(group=group_id).values_list('result', flat=True) + return [dbsafe_decode(t) for t in values] @staticmethod def get_task(task_id):