﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
12769	Queryset.query pickle fails if fields have lazy translations in field declaration params.	Jani Tiainen	nobody	"If declared model as:

{{{
from django.db import models
from django.utils.translation import ugettext_lazy as _

class TestModel(models.Model):
    name = models.CharField(_('name'), max_length=12)
}}}

Using query pickle like:

{{{
from models import TestModel
import pickle

qs = TestModel.objects.filter(name__contains='foobar')
        
s = pickle.dumps(qs.query)
}}}

Fails with exception:
{{{
Traceback (most recent call last):
  File ""/home/KEYPRO/jtiai/src/django-tests/pickle_error/showcase/tests.py"", line 15, in test_pickle_query
    s = pickle.dumps(qs.query)
  File ""/usr/lib/python2.6/pickle.py"", line 1366, in dumps
    Pickler(file, protocol).dump(obj)
  File ""/usr/lib/python2.6/pickle.py"", line 224, in dump
    self.save(obj)
  File ""/usr/lib/python2.6/pickle.py"", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File ""/usr/lib/python2.6/pickle.py"", line 419, in save_reduce
    save(state)
  File ""/usr/lib/python2.6/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.6/pickle.py"", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File ""/usr/lib/python2.6/pickle.py"", line 663, in _batch_setitems
    save(v)
  File ""/usr/lib/python2.6/pickle.py"", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File ""/usr/lib/python2.6/pickle.py"", line 419, in save_reduce
    save(state)
  File ""/usr/lib/python2.6/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.6/pickle.py"", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File ""/usr/lib/python2.6/pickle.py"", line 663, in _batch_setitems
    save(v)
  File ""/usr/lib/python2.6/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.6/pickle.py"", line 600, in save_list
    self._batch_appends(iter(obj))
  File ""/usr/lib/python2.6/pickle.py"", line 615, in _batch_appends
    save(x)
  File ""/usr/lib/python2.6/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.6/pickle.py"", line 562, in save_tuple
    save(element)
  File ""/usr/lib/python2.6/pickle.py"", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File ""/usr/lib/python2.6/pickle.py"", line 419, in save_reduce
    save(state)
  File ""/usr/lib/python2.6/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.6/pickle.py"", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File ""/usr/lib/python2.6/pickle.py"", line 663, in _batch_setitems
    save(v)
  File ""/usr/lib/python2.6/pickle.py"", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File ""/usr/lib/python2.6/pickle.py"", line 419, in save_reduce
    save(state)
  File ""/usr/lib/python2.6/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.6/pickle.py"", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File ""/usr/lib/python2.6/pickle.py"", line 663, in _batch_setitems
    save(v)
  File ""/usr/lib/python2.6/pickle.py"", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File ""/usr/lib/python2.6/pickle.py"", line 401, in save_reduce
    save(args)
  File ""/usr/lib/python2.6/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.6/pickle.py"", line 562, in save_tuple
    save(element)
  File ""/usr/lib/python2.6/pickle.py"", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File ""/usr/lib/python2.6/pickle.py"", line 748, in save_global
    (obj, module, name))
PicklingError: Can't pickle <class 'django.utils.functional.__proxy__'>: it's not found as django.utils.functional.__proxy__
}}}

This works perfectly with 1.1.1 so it must be a regression."		closed	Database layer (models, ORM)	dev		fixed	orm pickle query	Joe Holloway Stephan Jaensch	Accepted	0	0	0	0	0	0
