diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 748367eda..cfdd5d209 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -439,15 +439,14 @@ class InterfaceViewSet(PathEndpointMixin, NetBoxModelViewSet): GenericPrefetch( "cable__terminations__termination", [ - Interface.objects.prefetch_related("device"), + Interface.objects.select_related("device", "cable"), ], ), Prefetch( "_path", CablePath.objects.prefetch_related( GenericPrefetch("path_objects", [ - Interface.objects.prefetch_related("device"), - Cable.objects.prefetch_related("terminations"), + Interface.objects.select_related("device"), ]), ) ), diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 9438b741f..0ae00f5c4 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -189,8 +189,11 @@ class CabledObjectModel(models.Model): @cached_property def link_peers(self): if self.cable: - peers = self.cable.terminations.exclude(cable_end=self.cable_end).prefetch_related('termination') - return [peer.termination for peer in peers] + return [ + peer.termination + for peer in self.cable.terminations.all() + if peer.cable_end != self.cable_end + ] return [] @property