mirror of
https://github.com/Hopiu/django-model-utils.git
synced 2026-03-16 20:00:23 +00:00
Move patch_save to finalize_class so it works on models with save() methods
This commit is contained in:
parent
d557c42533
commit
f2e97e4141
2 changed files with 5 additions and 1 deletions
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue