From 3e4dc5ecf25aa2b38eed73472899f0de5a319c04 Mon Sep 17 00:00:00 2001 From: Loic Bistuer Date: Wed, 22 Jan 2014 16:53:41 +0700 Subject: [PATCH] Fixed #21853 -- Fixed Manager.__module__ to properly return 'django.db.models.manager'. The combination of BaseManager.from_queryset() and RenameMethodsBase results in Manager.__module__ having the wrong value. This can be an issue when trying to pickle the Manager class. --- django/db/models/manager.py | 4 +++- tests/queryset_pickle/tests.py | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/django/db/models/manager.py b/django/db/models/manager.py index 299faa0917..f014edcd76 100644 --- a/django/db/models/manager.py +++ b/django/db/models/manager.py @@ -190,7 +190,9 @@ class BaseManager(six.with_metaclass(RenameManagerMethods)): # understanding of how this comes into play. return self.get_queryset() -Manager = BaseManager.from_queryset(QuerySet, class_name='Manager') + +class Manager(BaseManager.from_queryset(QuerySet)): + pass class ManagerDescriptor(object): diff --git a/tests/queryset_pickle/tests.py b/tests/queryset_pickle/tests.py index 077ac6f59c..45b75dd0e9 100644 --- a/tests/queryset_pickle/tests.py +++ b/tests/queryset_pickle/tests.py @@ -50,6 +50,9 @@ class PickleabilityTestCase(TestCase): self.assertEqual(original.__class__, unpickled.__class__) self.assertEqual(original.args, unpickled.args) + def test_manager_pickle(self): + pickle.loads(pickle.dumps(Happening.objects)) + def test_model_pickle(self): """ Test that a model not defined on module level is pickleable.