#24831: Pickling querysets with prefetch_related breaks
----------------------------------------------+----------------------------
     Reporter:  lsemel                        |      Owner:  nobody
         Type:  Bug                           |     Status:  new
    Component:  Database layer (models, ORM)  |    Version:  1.8
     Severity:  Normal                        |   Keywords:
                                              |  prefetch_related
 Triage Stage:  Unreviewed                    |  Has patch:  0
Easy pickings:  0                             |      UI/UX:  0
----------------------------------------------+----------------------------
 In Django 1.8.1, pickling certain querysets that use prefetch_related
 breaks, with an error message that pickle can't find the through model,
 with an error like

 {{{
     PicklingError: Can't pickle <class 'bug.models.Category_books'>: it's
 not found as bug.models.Category_books
 }}}

 With these models

 {{{

 from django.db import models

 class Book(models.Model):
     title = models.CharField(max_length=100)

 class Author(models.Model):
     name = models.CharField(max_length=100)
     books = models.ManyToManyField(Book, related_name='authors')

 class Category(models.Model):
     title = models.CharField(max_length=100)
     books = models.ManyToManyField(Book, related_name='categories')

 }}}

 and these tests

 {{{

 from django.test import TestCase
 import pickle
 from .models import Book, Author, Category

 class PickleTestCase(TestCase):
     def setUp(self):
         author1 = Author.objects.create(name='Joe Schmoe')
         author2 = Author.objects.create(name='Jane Schmoe')
         book1 = Book.objects.create(title='Whatever')
         book1.authors.add(author1)
         book1.authors.add(author2)
         book2 = Book.objects.create(title='Another')
         book2.authors.add(author1)
         book2.authors.add(author2)
         cat1 = Category.objects.create(title='Category 1')
         cat1.books.add(book1)
         cat1.books.add(book2)
         cat2 = Category.objects.create(title='Category 2')
         cat2.books.add(book1)
         cat2.books.add(book2)

     def tearDown(self):
         Author.objects.all().delete()
         Book.objects.all().delete()
         Category.objects.all().delete()

     def test_pickle(self):
         qs = Category.objects.prefetch_related('books__authors').all()
         pickle.dumps(qs)

     def test_pickle2(self):
         qs = Author.objects.prefetch_related('books__categories').all()
         pickle.dumps(qs)

     def test_pickle3(self):
         qs = Book.objects.prefetch_related('categories__books').all()
         pickle.dumps(qs)


 }}}

 The second and third tests will fail with the following stack trace

 {{{


         .EE
 ======================================================================
         ERROR: test_pickle2 (bug.tests.PickleTestCase)
 ----------------------------------------------------------------------
         Traceback (most recent call last):
           File "/Users/lsemel/www/djangobug/bug/tests.py", line 33, in
 test_pickle2
             pickle.dumps(qs)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 1374, in dumps
             Pickler(file, protocol).dump(obj)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 224, in dump
             self.save(obj)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 600, in save_list
             self._batch_appends(iter(obj))
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 615, in _batch_appends
             save(x)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 600, in save_list
             self._batch_appends(iter(obj))
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 615, in _batch_appends
             save(x)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 300, in save
             self.save_global(obj)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 748, in save_global
             (obj, module, name))
         PicklingError: Can't pickle <class 'bug.models.Category_books'>:
 it's not found as bug.models.Category_books

 ======================================================================
         ERROR: test_pickle3 (bug.tests.PickleTestCase)
 ----------------------------------------------------------------------
         Traceback (most recent call last):
           File "/Users/lsemel/www/djangobug/bug/tests.py", line 37, in
 test_pickle3
             pickle.dumps(qs)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 1374, in dumps
             Pickler(file, protocol).dump(obj)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 224, in dump
             self.save(obj)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 600, in save_list
             self._batch_appends(iter(obj))
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 615, in _batch_appends
             save(x)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 600, in save_list
             self._batch_appends(iter(obj))
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 615, in _batch_appends
             save(x)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 331, in save
             self.save_reduce(obj=obj, *rv)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 419, in save_reduce
             save(state)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 286, in save
             f(self, obj) # Call unbound method with explicit self
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 649, in save_dict
             self._batch_setitems(obj.iteritems())
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 663, in _batch_setitems
             save(v)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 300, in save
             self.save_global(obj)
           File
 
"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py",
 line 748, in save_global
             (obj, module, name))
         PicklingError: Can't pickle <class 'bug.models.Category_books'>:
 it's not found as bug.models.Category_books

 ----------------------------------------------------------------------
         Ran 3 tests in 0.075s


 }}}

 If the deletions in tearDown() are removed, all the tests pass.

--
Ticket URL: <https://code.djangoproject.com/ticket/24831>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/049.e385b83ccbbcceefa95ab2e0d6b7e8cb%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to