From 15f9393bb21e2ea349113868d38eeb180dee97cb Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Thu, 28 Jun 2018 13:16:33 -0700 Subject: [PATCH] Handle API change in DeferredAttribute descriptor in django-trunk. This should maintain compatibility with the next version of django. --- model_utils/tracker.py | 5 ++++- tests/models.py | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/model_utils/tracker.py b/model_utils/tracker.py index a145b1a..a0bc0d0 100644 --- a/model_utils/tracker.py +++ b/model_utils/tracker.py @@ -187,7 +187,10 @@ class FieldInstanceTracker(object): field_tracker = FileDescriptorTracker(field_obj.field) setattr(self.instance.__class__, field, field_tracker) else: - field_tracker = DeferredAttributeTracker(field, type(self.instance)) + if django.VERSION < (2, 1): + field_tracker = DeferredAttributeTracker(field, type(self.instance)) + else: + field_tracker = DeferredAttributeTracker(field) setattr(self.instance.__class__, field, field_tracker) diff --git a/tests/models.py b/tests/models.py index 91df0b6..7c9bb56 100644 --- a/tests/models.py +++ b/tests/models.py @@ -1,5 +1,6 @@ from __future__ import unicode_literals, absolute_import +import django from django.db import models from django.db.models.query_utils import DeferredAttribute from django.db.models import Manager @@ -346,7 +347,10 @@ class StringyDescriptor(object): return self if self.name in obj.get_deferred_fields(): # This queries the database, and sets the value on the instance. - DeferredAttribute(field_name=self.name, model=cls).__get__(obj, cls) + if django.VERSION < (2, 1): + DeferredAttribute(field_name=self.name, model=cls).__get__(obj, cls) + else: + DeferredAttribute(field_name=self.name).__get__(obj, cls) return str(obj.__dict__[self.name]) def __set__(self, obj, value):