Fix accessor replacement consistency on Django 1.11

At this point, we don't know why this line of code is executed, but
we do know it's not consistently executed between Django 1.10 and
Django 1.11 due to the addition of `ForwardOneToOneDescriptor`, a
subclass of `ForwardManyToOneDescriptor`.

Refs. 6628145af7
Refs. kavdev/dj-stripe#524
Refs. django/django@38575b007a
fix_request_path_info
Jerome Leclanche 2017-06-04 13:59:30 +03:00
parent bcb8b0d3a4
commit 544f5edef4
1 changed files with 2 additions and 2 deletions

View File

@ -173,9 +173,9 @@ class PolymorphicModel(six.with_metaclass(PolymorphicModelBase, models.Model)):
ReverseSingleRelatedObjectDescriptor as ForwardManyToOneDescriptor,
)
for name, model in subclasses_and_superclasses_accessors.items():
# Here be dragons.
orig_accessor = getattr(self.__class__, name, None)
if type(orig_accessor) in [ReverseOneToOneDescriptor, ForwardManyToOneDescriptor]:
# print >>sys.stderr, '---------- replacing', name, orig_accessor, '->', model
if issubclass(type(orig_accessor), (ReverseOneToOneDescriptor, ForwardManyToOneDescriptor)):
setattr(self.__class__, name, property(create_accessor_function_for_model(model, name)))
def _get_inheritance_relation_fields_and_models(self):