From 0c940bd79548bb08ff2f4ab0add7e4826d10ee53 Mon Sep 17 00:00:00 2001 From: Gavin Wahl Date: Fri, 2 Oct 2015 15:08:10 -0600 Subject: [PATCH] SingleRelatedObjectDescriptor was renamed in Django 1.9 --- polymorphic/polymorphic_model.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/polymorphic/polymorphic_model.py b/polymorphic/polymorphic_model.py index 0046fce..cbfdef9 100644 --- a/polymorphic/polymorphic_model.py +++ b/polymorphic/polymorphic_model.py @@ -173,10 +173,17 @@ class PolymorphicModel(six.with_metaclass(PolymorphicModelBase, models.Model)): subclasses_and_superclasses_accessors = self._get_inheritance_relation_fields_and_models() - from django.db.models.fields.related import SingleRelatedObjectDescriptor, ReverseSingleRelatedObjectDescriptor + try: + from django.db.models.fields.related import ReverseOneToOneDescriptor, ForwardManyToOneDescriptor + except ImportError: + # django < 1.9 + from django.db.models.fields.related import ( + SingleRelatedObjectDescriptor as ReverseOneToOneDescriptor, + ReverseSingleRelatedObjectDescriptor as ForwardManyToOneDescriptor, + ) for name, model in subclasses_and_superclasses_accessors.items(): orig_accessor = getattr(self.__class__, name, None) - if type(orig_accessor) in [SingleRelatedObjectDescriptor, ReverseSingleRelatedObjectDescriptor]: + if type(orig_accessor) in [ReverseOneToOneDescriptor, ForwardManyToOneDescriptor]: #print >>sys.stderr, '---------- replacing', name, orig_accessor, '->', model setattr(self.__class__, name, property(create_accessor_function_for_model(model, name)))