diff --git a/docs/release-notes/version-2.7.md b/docs/release-notes/version-2.7.md index d2f0257e7..e32b9d355 100644 --- a/docs/release-notes/version-2.7.md +++ b/docs/release-notes/version-2.7.md @@ -13,6 +13,7 @@ * [#4282](https://github.com/netbox-community/netbox/issues/4282) - Fix label on export button for device types * [#4285](https://github.com/netbox-community/netbox/issues/4285) - Include A/Z termination sites in provider circuits table * [#4295](https://github.com/netbox-community/netbox/issues/4295) - Fix assignment of parent LAG during interface bulk edit +* [#4301](https://github.com/netbox-community/netbox/issues/4301) - Fix exception when deleting device type with components --- diff --git a/netbox/dcim/models/device_component_templates.py b/netbox/dcim/models/device_component_templates.py index faa42b035..164d37d77 100644 --- a/netbox/dcim/models/device_component_templates.py +++ b/netbox/dcim/models/device_component_templates.py @@ -1,4 +1,4 @@ -from django.core.exceptions import ValidationError +from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models @@ -37,11 +37,17 @@ class ComponentTemplateModel(models.Model): raise NotImplementedError() def to_objectchange(self, action): + # Annotate the parent DeviceType + try: + device_type = self.device_type + except ObjectDoesNotExist: + # The parent DeviceType has already been deleted + device_type = None return ObjectChange( changed_object=self, object_repr=str(self), action=action, - related_object=self.device_type, + related_object=device_type, object_data=serialize_object(self) )