diff --git a/docs/release-notes/version-2.11.md b/docs/release-notes/version-2.11.md index f010e5d1b..379c717c7 100644 --- a/docs/release-notes/version-2.11.md +++ b/docs/release-notes/version-2.11.md @@ -13,6 +13,7 @@ * [#6562](https://github.com/netbox-community/netbox/issues/6562) - Disable ordering of secrets by assigned object * [#6563](https://github.com/netbox-community/netbox/issues/6563) - Fix filtering by location for cable connection forms * [#6584](https://github.com/netbox-community/netbox/issues/6584) - Fix ordering of nested inventory items +* [#6602](https://github.com/netbox-community/netbox/issues/6602) - Fix deletion of devices with cables attached --- diff --git a/netbox/dcim/signals.py b/netbox/dcim/signals.py index 8675ee7ce..33a868f2c 100644 --- a/netbox/dcim/signals.py +++ b/netbox/dcim/signals.py @@ -146,14 +146,12 @@ def nullify_connected_endpoints(instance, **kwargs): # Disassociate the Cable from its termination points if instance.termination_a is not None: logger.debug(f"Nullifying termination A for cable {instance}") - instance.termination_a.cable = None - instance.termination_a._cable_peer = None - instance.termination_a.save() + model = instance.termination_a._meta.model + model.objects.filter(pk=instance.termination_a.pk).update(_cable_peer_type=None, _cable_peer_id=None) if instance.termination_b is not None: logger.debug(f"Nullifying termination B for cable {instance}") - instance.termination_b.cable = None - instance.termination_b._cable_peer = None - instance.termination_b.save() + model = instance.termination_b._meta.model + model.objects.filter(pk=instance.termination_b.pk).update(_cable_peer_type=None, _cable_peer_id=None) # Delete and retrace any dependent cable paths for cablepath in CablePath.objects.filter(path__contains=instance):