Fixed #10547 -- Worked around some odd behaviour in Python 2.3 and 2.4.
Calling the super() version of __reduce__ in Model.__reduce__ led to infinite loops in Python prior to 2.5. We don't do that any longer. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10099 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
e3139cc075
commit
255cb391d1
|
@ -348,9 +348,9 @@ class Model(object):
|
||||||
need to do things manually, as they're dynamically created classes and
|
need to do things manually, as they're dynamically created classes and
|
||||||
only module-level classes can be pickled by the default path.
|
only module-level classes can be pickled by the default path.
|
||||||
"""
|
"""
|
||||||
if not self._deferred:
|
|
||||||
return super(Model, self).__reduce__()
|
|
||||||
data = self.__dict__
|
data = self.__dict__
|
||||||
|
if not self._deferred:
|
||||||
|
return (self.__class__, (), data)
|
||||||
defers = []
|
defers = []
|
||||||
pk_val = None
|
pk_val = None
|
||||||
for field in self._meta.fields:
|
for field in self._meta.fields:
|
||||||
|
|
|
@ -895,6 +895,9 @@ Check pickling of deferred-loading querysets
|
||||||
>>> q2 = pickle.loads(pickle.dumps(qs))
|
>>> q2 = pickle.loads(pickle.dumps(qs))
|
||||||
>>> list(qs) == list(q2)
|
>>> list(qs) == list(q2)
|
||||||
True
|
True
|
||||||
|
>>> q3 = pickle.loads(pickle.dumps(qs, pickle.HIGHEST_PROTOCOL))
|
||||||
|
>>> list(qs) == list(q3)
|
||||||
|
True
|
||||||
|
|
||||||
Bug #7277
|
Bug #7277
|
||||||
>>> n1.annotation_set.filter(Q(tag=t5) | Q(tag__children=t5) | Q(tag__children__children=t5))
|
>>> n1.annotation_set.filter(Q(tag=t5) | Q(tag__children=t5) | Q(tag__children__children=t5))
|
||||||
|
|
Loading…
Reference in New Issue