From 3f662dd2220f5c6ee43e6ad3d525d60be04d13e8 Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Tue, 18 Aug 2026 17:51:20 +0200 Subject: [PATCH] fix(ui): Display nested group and platform hierarchies Replace RelatedObjectAttr with NestedObjectAttr for Tenant Groups, Wireless LAN Groups, and Device Type default platforms. Limit Platform hierarchies to three levels for consistency with existing Platform fields. Fixes #22954 --- netbox/dcim/ui/panels.py | 2 +- netbox/tenancy/ui/panels.py | 2 +- netbox/virtualization/ui/panels.py | 2 +- netbox/wireless/ui/panels.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/netbox/dcim/ui/panels.py b/netbox/dcim/ui/panels.py index bd2adc7f6..a75ed608f 100644 --- a/netbox/dcim/ui/panels.py +++ b/netbox/dcim/ui/panels.py @@ -150,7 +150,7 @@ class DeviceTypePanel(panels.ObjectAttributesPanel): manufacturer = attrs.RelatedObjectAttr('manufacturer', linkify=True) model = attrs.TextAttr('model') part_number = attrs.TextAttr('part_number') - default_platform = attrs.RelatedObjectAttr('default_platform', linkify=True) + default_platform = attrs.NestedObjectAttr('default_platform', linkify=True, max_depth=3) description = attrs.TextAttr('description') height = attrs.TemplatedAttr('u_height', template_name='dcim/devicetype/attrs/height.html') exclude_from_utilization = attrs.BooleanAttr('exclude_from_utilization') diff --git a/netbox/tenancy/ui/panels.py b/netbox/tenancy/ui/panels.py index 75d512385..d47083626 100644 --- a/netbox/tenancy/ui/panels.py +++ b/netbox/tenancy/ui/panels.py @@ -4,7 +4,7 @@ from netbox.ui import attrs, panels class TenantPanel(panels.ObjectAttributesPanel): - group = attrs.RelatedObjectAttr('group', linkify=True) + group = attrs.NestedObjectAttr('group', linkify=True) description = attrs.TextAttr('description') diff --git a/netbox/virtualization/ui/panels.py b/netbox/virtualization/ui/panels.py index ccc17e48a..c3cf4317a 100644 --- a/netbox/virtualization/ui/panels.py +++ b/netbox/virtualization/ui/panels.py @@ -24,7 +24,7 @@ class ClusterPanel(panels.ObjectAttributesPanel): class VirtualMachineTypePanel(panels.ObjectAttributesPanel): name = attrs.TextAttr('name') - default_platform = attrs.RelatedObjectAttr('default_platform', linkify=True) + default_platform = attrs.NestedObjectAttr('default_platform', linkify=True, max_depth=3) default_vcpus = attrs.TextAttr('default_vcpus', label=_('Default vCPUs')) default_memory = attrs.TemplatedAttr( 'default_memory', diff --git a/netbox/wireless/ui/panels.py b/netbox/wireless/ui/panels.py index 385a1f853..8723bad28 100644 --- a/netbox/wireless/ui/panels.py +++ b/netbox/wireless/ui/panels.py @@ -9,7 +9,7 @@ class WirelessLANGroupPanel(panels.NestedGroupObjectPanel): class WirelessLANPanel(panels.ObjectAttributesPanel): ssid = attrs.TextAttr('ssid', label=_('SSID')) - group = attrs.RelatedObjectAttr('group', linkify=True) + group = attrs.NestedObjectAttr('group', linkify=True) status = attrs.ChoiceAttr('status') scope = attrs.GenericForeignKeyAttr('scope', linkify=True, nested=True, max_depth=3) description = attrs.TextAttr('description')