diff --git a/polymorphic/base.py b/polymorphic/base.py index 1c472b6..3405ba5 100644 --- a/polymorphic/base.py +++ b/polymorphic/base.py @@ -92,7 +92,10 @@ class PolymorphicModelBase(ModelBase): new_class._default_manager._inherited = False # the default mgr was defined by the user, not inherited # validate resulting default manager - self.validate_model_manager(new_class._default_manager, model_name, '_default_manager') + if django.VERSION >= (1, 10) and not new_class._meta.abstract: + self.validate_model_manager(new_class.objects, model_name, 'objects') + else: + self.validate_model_manager(new_class._default_manager, model_name, '_default_manager') # for __init__ function of this class (monkeypatching inheritance accessors) new_class.polymorphic_super_sub_accessors_replaced = False diff --git a/polymorphic/tests.py b/polymorphic/tests.py index 379e955..d048313 100644 --- a/polymorphic/tests.py +++ b/polymorphic/tests.py @@ -990,11 +990,16 @@ class PolymorphicTests(TestCase): # by choice of MRO, should be MyManager from MROBase1. self.assertIs(type(MRODerived.objects), MyManager) - # check for correct default manager - self.assertIs(type(MROBase1._default_manager), MyManager) + if django.VERSION < (1, 10, 1): + # The change for https://code.djangoproject.com/ticket/27073 + # in https://github.com/django/django/commit/d4eefc7e2af0d93283ed1c03e0af0a482982b6f0 + # removes the assignment to _default_manager - # Django vanilla inheritance does not inherit MyManager as _default_manager here - self.assertIs(type(MROBase2._default_manager), MyManager) + # check for correct default manager + self.assertIs(type(MROBase1._default_manager), MyManager) + + # Django vanilla inheritance does not inherit MyManager as _default_manager here + self.assertIs(type(MROBase2._default_manager), MyManager) def test_queryset_assignment(self): # This is just a consistency check for now, testing standard Django behavior.