summaryrefslogtreecommitdiff
path: root/django/db/models/sql/query.py
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2009-04-11 15:25:15 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2009-04-11 15:25:15 +0000
commit4a4d3e213316ea39a0f8d596c9c0d3dfba8ce495 (patch)
tree5fd4032583b95a2554334d0793950c3543f86149 /django/db/models/sql/query.py
parent945b89e17797dc234f9d49874170b937b02e0315 (diff)
Fixed #10796 -- Corrected a pickling problem introduced by [10522]. Thanks to carljm for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10526 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/db/models/sql/query.py')
-rw-r--r--django/db/models/sql/query.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index df4de2a750..f4bf8b2b07 100644
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -124,8 +124,13 @@ class BaseQuery(object):
obj_dict['related_select_cols'] = []
del obj_dict['connection']
- # Fields can't be pickled, so we pickle the list of field names instead.
- obj_dict['select_fields'] = [f.name for f in obj_dict['select_fields']]
+ # Fields can't be pickled, so if a field list has been
+ # specified, we pickle the list of field names instead.
+ # None is also a possible value; that can pass as-is
+ obj_dict['select_fields'] = [
+ f is not None and f.name or None
+ for f in obj_dict['select_fields']
+ ]
return obj_dict
def __setstate__(self, obj_dict):
@@ -133,7 +138,10 @@ class BaseQuery(object):
Unpickling support.
"""
# Rebuild list of field instances
- obj_dict['select_fields'] = [obj_dict['model']._meta.get_field(name) for name in obj_dict['select_fields']]
+ obj_dict['select_fields'] = [
+ name is not None and obj_dict['model']._meta.get_field(name) or None
+ for name in obj_dict['select_fields']
+ ]
self.__dict__.update(obj_dict)
# XXX: Need a better solution for this when multi-db stuff is