Skip to content

Commit 60af03c

Browse files
RealOrangeOneRoss Mechanic
authored andcommitted
Prefetch which fields instances have (#470)
* Prefetch which fields instances have This no longer calls queries, drastically improving performance when diffing models. * Reduce line length
1 parent a11f903 commit 60af03c

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

simple_history/models.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -437,9 +437,13 @@ def diff_against(self, old_history):
437437

438438
changes = []
439439
changed_fields = []
440+
instance_fields = [field.name for field in self.instance._meta.fields]
441+
old_instance_fields = [
442+
field.name for field in old_history.instance._meta.fields
443+
]
440444
for field in self._meta.fields:
441-
if hasattr(self.instance, field.name) and \
442-
hasattr(old_history.instance, field.name):
445+
if field.name in instance_fields and \
446+
field.name in old_instance_fields:
443447
old_value = getattr(old_history, field.name, '')
444448
new_value = getattr(self, field.name)
445449
if old_value != new_value:

0 commit comments

Comments
 (0)