#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 [email protected].
To post to this group, send email to [email protected].
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