diff --git a/specifyweb/specify/api/crud.py b/specifyweb/specify/api/crud.py index d0923d3b5d9..f9dcb9e9cd8 100644 --- a/specifyweb/specify/api/crud.py +++ b/specifyweb/specify/api/crud.py @@ -172,14 +172,16 @@ def delete_obj(obj, deleter: Callable[[Any, Any], None] | None=None, version=Non if hasattr(obj, 'pre_constraints_delete'): obj.pre_constraints_delete() - if deleter: deleter(obj, parent_obj) obj.delete() + # before delete obj, store dep id to avoid accessing deleted obj in recursive delete calls for dep in dependents_to_delete: - delete_obj(dep, deleter, version, parent_obj=obj, clean_predelete=clean_predelete) + dep_id = dep.id + if dep_id is not None: + delete_obj(dep, deleter, version, parent_obj=obj, clean_predelete=clean_predelete) def update_or_create_resource(collection, agent, model, data, parent_obj, parent_relationship=None): if 'id' in data: