Skip to content

Commit e97a2ad

Browse files
committed
[-] Adds updates from soynatan#141 PR
1 parent cadc9dc commit e97a2ad

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

easyaudit/signals/model_signals.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from django.contrib.auth.models import AnonymousUser
77
from django.contrib.contenttypes.models import ContentType
88
from django.core import serializers
9+
from django.core.exceptions import ObjectDoesNotExist
910
from django.db import transaction
1011
from django.db.models import signals
1112
from django.utils import timezone
@@ -62,16 +63,21 @@ def pre_save(sender, instance, raw, using, update_fields, **kwargs):
6263
# We need a better way for this to work. ManyToMany will fail on pre_save on create
6364
return None
6465

65-
# Query the object, see if it exists
66-
try:
67-
old_model = sender.objects.get(pk=instance.pk)
68-
created = False
69-
except (sender.DoesNotExist, ):
70-
old_model = None
66+
# Determine if the instance is a create
67+
if instance.pk is None:
7168
created = True
69+
else:
70+
created = False
71+
try:
72+
old_model = sender.objects.get(pk=instance.pk)
73+
created = False
74+
except ObjectDoesNotExist:
75+
# This can happen when a model is saved as part of a Transaction. It then has
76+
# a pk set but is actually created.
77+
created = True
7278

7379
# created or updated?
74-
if old_model:
80+
if not created:
7581
delta = model_delta(old_model, instance)
7682
if not delta and getattr(settings, "DJANGO_EASY_AUDIT_CRUD_EVENT_NO_CHANGED_FIELDS_SKIP", False):
7783
return False

0 commit comments

Comments
 (0)