19680 skip changelog update for deleted objects

This commit is contained in:
Arthur 2025-06-10 08:31:04 -07:00
parent 5334fd7849
commit 1c71107a44

View File

@ -117,6 +117,7 @@ def handle_deleted_object(sender, instance, **kwargs):
# to queueing any events for the object being deleted, in case a validation error is # to queueing any events for the object being deleted, in case a validation error is
# raised, causing the deletion to fail. # raised, causing the deletion to fail.
model_name = f'{sender._meta.app_label}.{sender._meta.model_name}' model_name = f'{sender._meta.app_label}.{sender._meta.model_name}'
print(f"handle_deleted_object: {model_name}")
validators = get_config().PROTECTION_RULES.get(model_name, []) validators = get_config().PROTECTION_RULES.get(model_name, [])
try: try:
run_validators(instance, validators) run_validators(instance, validators)
@ -162,6 +163,12 @@ def handle_deleted_object(sender, instance, **kwargs):
getattr(obj, related_field_name).remove(instance) getattr(obj, related_field_name).remove(instance)
elif type(relation) is ManyToOneRel and relation.field.null is True: elif type(relation) is ManyToOneRel and relation.field.null is True:
setattr(obj, related_field_name, None) setattr(obj, related_field_name, None)
# make sure the object hasn't been deleted - in case of
# deletion chaining of related objects
try:
obj.refresh_from_db()
except DoesNotExist:
continue
obj.save() obj.save()
# Enqueue the object for event processing # Enqueue the object for event processing