diff --git a/model_utils/tracker.py b/model_utils/tracker.py index 6f50d10..5c7c7d8 100644 --- a/model_utils/tracker.py +++ b/model_utils/tracker.py @@ -210,7 +210,6 @@ class FieldTracker(object): def contribute_to_class(self, cls, name): self.name = name self.attname = '_%s' % name - self.patch_save(cls) models.signals.class_prepared.connect(self.finalize_class, sender=cls) def finalize_class(self, sender, **kwargs): @@ -227,6 +226,7 @@ class FieldTracker(object): models.signals.post_init.connect(self.initialize_tracker) self.model_class = sender setattr(sender, self.name, self) + self.patch_save(sender) def initialize_tracker(self, sender, instance, **kwargs): if not isinstance(instance, self.model_class): diff --git a/tests/models.py b/tests/models.py index ef38626..bab9d4b 100644 --- a/tests/models.py +++ b/tests/models.py @@ -238,6 +238,10 @@ class Tracked(models.Model): tracker = FieldTracker() + def save(self, *args, **kwargs): + """ No-op save() to ensure that FieldTracker.patch_save() works. """ + super(Tracked, self).save(*args, **kwargs) + class TrackedFK(models.Model): fk = models.ForeignKey('Tracked', on_delete=models.CASCADE)