From a49936c267f0c97163b8f1bba4cf93f675e2a489 Mon Sep 17 00:00:00 2001 From: Matthew Schinckel Date: Thu, 20 Mar 2014 11:12:38 +1030 Subject: [PATCH 1/2] Test case demonstrating relation failure. https://github.com/carljm/django-model-utils/issues/120 --- model_utils/tests/tests.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/model_utils/tests/tests.py b/model_utils/tests/tests.py index fac85ac..294be8c 100644 --- a/model_utils/tests/tests.py +++ b/model_utils/tests/tests.py @@ -1238,12 +1238,18 @@ class PassThroughManagerTests(TestCase): class CreatePassThroughManagerTests(TestCase): def setUp(self): self.dude = Dude.objects.create(name='El Duderino') + self.other_dude = Dude.objects.create(name='Das D\xc3de') def test_reverse_manager(self): Spot.objects.create( name='The Crib', owner=self.dude, closed=True, secure=True, secret=False) self.assertEqual(self.dude.spots_owned.closed().count(), 1) + Spot.objects.create( + name='The Crux', owner=self.other_dude, closed=True, secure=True, + secret=False + ) + self.assertEqual(self.dude.spots_owned.closed().count(), 1) def test_related_queryset_pickling(self): Spot.objects.create( From 93500bb381671198b54b1b9a331b2027418d23fc Mon Sep 17 00:00:00 2001 From: Matthew Schinckel Date: Thu, 20 Mar 2014 13:11:00 +1030 Subject: [PATCH 2/2] Ensure we call get_query_set on django 1.5- Supersedes https://github.com/carljm/django-model-utils/pull/106 I can't actually see why this works, but it does: tests pass after this that failed before. --- model_utils/managers.py | 2 ++ model_utils/tests/tests.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/model_utils/managers.py b/model_utils/managers.py index 6149c50..aac6d7c 100644 --- a/model_utils/managers.py +++ b/model_utils/managers.py @@ -240,6 +240,8 @@ class PassThroughManagerMixin(object): def __getattr__(self, name): if name in self._deny_methods: raise AttributeError(name) + if django.VERSION < (1, 6, 0): + return getattr(self.get_query_set(), name) return getattr(self.get_queryset(), name) def get_queryset(self): diff --git a/model_utils/tests/tests.py b/model_utils/tests/tests.py index 294be8c..63b16d1 100644 --- a/model_utils/tests/tests.py +++ b/model_utils/tests/tests.py @@ -1238,7 +1238,7 @@ class PassThroughManagerTests(TestCase): class CreatePassThroughManagerTests(TestCase): def setUp(self): self.dude = Dude.objects.create(name='El Duderino') - self.other_dude = Dude.objects.create(name='Das D\xc3de') + self.other_dude = Dude.objects.create(name='Das Dude') def test_reverse_manager(self): Spot.objects.create( @@ -1249,6 +1249,7 @@ class CreatePassThroughManagerTests(TestCase): name='The Crux', owner=self.other_dude, closed=True, secure=True, secret=False ) + self.assertEqual(self.dude.spots_owned.closed().all().count(), 1) self.assertEqual(self.dude.spots_owned.closed().count(), 1) def test_related_queryset_pickling(self):