Răsfoiți Sursa

Remove extraneous prefetch_related() calls from object list views

Jeremy Stretch 5 ani în urmă
părinte
comite
9a9babfc35

+ 1 - 1
netbox/circuits/views.py

@@ -124,7 +124,7 @@ class CircuitListView(ObjectListView):
 
 
 class CircuitView(ObjectView):
-    queryset = Circuit.objects.prefetch_related('provider', 'type', 'tenant__group')
+    queryset = Circuit.objects.all()
 
     def get(self, request, pk):
         circuit = get_object_or_404(self.queryset, pk=pk)

+ 22 - 38
netbox/dcim/views.py

@@ -147,7 +147,7 @@ class RegionBulkDeleteView(BulkDeleteView):
 #
 
 class SiteListView(ObjectListView):
-    queryset = Site.objects.prefetch_related('region', 'tenant')
+    queryset = Site.objects.all()
     filterset = filters.SiteFilterSet
     filterset_form = forms.SiteFilterForm
     table = tables.SiteTable
@@ -222,7 +222,7 @@ class RackGroupListView(ObjectListView):
         'group',
         'rack_count',
         cumulative=True
-    ).prefetch_related('site')
+    )
     filterset = filters.RackGroupFilterSet
     filterset_form = forms.RackGroupFilterForm
     table = tables.RackGroupTable
@@ -289,9 +289,7 @@ class RackRoleBulkDeleteView(BulkDeleteView):
 #
 
 class RackListView(ObjectListView):
-    queryset = Rack.objects.prefetch_related(
-        'site', 'group', 'tenant', 'role', 'devices__device_type'
-    ).annotate(
+    queryset = Rack.objects.annotate(
         device_count=Count('devices')
     ).order_by(*Rack._meta.ordering)
     filterset = filters.RackFilterSet
@@ -410,7 +408,7 @@ class RackBulkDeleteView(BulkDeleteView):
 #
 
 class RackReservationListView(ObjectListView):
-    queryset = RackReservation.objects.prefetch_related('rack__site')
+    queryset = RackReservation.objects.all()
     filterset = filters.RackReservationFilterSet
     filterset_form = forms.RackReservationFilterForm
     table = tables.RackReservationTable
@@ -514,7 +512,7 @@ class ManufacturerBulkDeleteView(BulkDeleteView):
 #
 
 class DeviceTypeListView(ObjectListView):
-    queryset = DeviceType.objects.prefetch_related('manufacturer').annotate(
+    queryset = DeviceType.objects.annotate(
         instance_count=Count('instances')
     ).order_by(*DeviceType._meta.ordering)
     filterset = filters.DeviceTypeFilterSet
@@ -989,9 +987,7 @@ class PlatformBulkDeleteView(BulkDeleteView):
 #
 
 class DeviceListView(ObjectListView):
-    queryset = Device.objects.prefetch_related(
-        'device_type__manufacturer', 'device_role', 'tenant', 'site', 'rack', 'primary_ip4', 'primary_ip6'
-    )
+    queryset = Device.objects.all()
     filterset = filters.DeviceFilterSet
     filterset_form = forms.DeviceFilterForm
     table = tables.DeviceTable
@@ -1263,7 +1259,7 @@ class DeviceBulkDeleteView(BulkDeleteView):
 #
 
 class ConsolePortListView(ObjectListView):
-    queryset = ConsolePort.objects.prefetch_related('device', 'cable')
+    queryset = ConsolePort.objects.all()
     filterset = filters.ConsolePortFilterSet
     filterset_form = forms.ConsolePortFilterForm
     table = tables.ConsolePortTable
@@ -1323,7 +1319,7 @@ class ConsolePortBulkDeleteView(BulkDeleteView):
 #
 
 class ConsoleServerPortListView(ObjectListView):
-    queryset = ConsoleServerPort.objects.prefetch_related('device', 'cable')
+    queryset = ConsoleServerPort.objects.all()
     filterset = filters.ConsoleServerPortFilterSet
     filterset_form = forms.ConsoleServerPortFilterForm
     table = tables.ConsoleServerPortTable
@@ -1383,7 +1379,7 @@ class ConsoleServerPortBulkDeleteView(BulkDeleteView):
 #
 
 class PowerPortListView(ObjectListView):
-    queryset = PowerPort.objects.prefetch_related('device', 'cable')
+    queryset = PowerPort.objects.all()
     filterset = filters.PowerPortFilterSet
     filterset_form = forms.PowerPortFilterForm
     table = tables.PowerPortTable
@@ -1443,7 +1439,7 @@ class PowerPortBulkDeleteView(BulkDeleteView):
 #
 
 class PowerOutletListView(ObjectListView):
-    queryset = PowerOutlet.objects.prefetch_related('device', 'cable')
+    queryset = PowerOutlet.objects.all()
     filterset = filters.PowerOutletFilterSet
     filterset_form = forms.PowerOutletFilterForm
     table = tables.PowerOutletTable
@@ -1503,7 +1499,7 @@ class PowerOutletBulkDeleteView(BulkDeleteView):
 #
 
 class InterfaceListView(ObjectListView):
-    queryset = Interface.objects.prefetch_related('device', 'cable')
+    queryset = Interface.objects.all()
     filterset = filters.InterfaceFilterSet
     filterset_form = forms.InterfaceFilterForm
     table = tables.InterfaceTable
@@ -1593,7 +1589,7 @@ class InterfaceBulkDeleteView(BulkDeleteView):
 #
 
 class FrontPortListView(ObjectListView):
-    queryset = FrontPort.objects.prefetch_related('device', 'cable')
+    queryset = FrontPort.objects.all()
     filterset = filters.FrontPortFilterSet
     filterset_form = forms.FrontPortFilterForm
     table = tables.FrontPortTable
@@ -1653,7 +1649,7 @@ class FrontPortBulkDeleteView(BulkDeleteView):
 #
 
 class RearPortListView(ObjectListView):
-    queryset = RearPort.objects.prefetch_related('device', 'cable')
+    queryset = RearPort.objects.all()
     filterset = filters.RearPortFilterSet
     filterset_form = forms.RearPortFilterForm
     table = tables.RearPortTable
@@ -1713,7 +1709,7 @@ class RearPortBulkDeleteView(BulkDeleteView):
 #
 
 class DeviceBayListView(ObjectListView):
-    queryset = DeviceBay.objects.prefetch_related('device', 'installed_device')
+    queryset = DeviceBay.objects.all()
     filterset = filters.DeviceBayFilterSet
     filterset_form = forms.DeviceBayFilterForm
     table = tables.DeviceBayTable
@@ -1836,7 +1832,7 @@ class DeviceBayBulkDeleteView(BulkDeleteView):
 #
 
 class InventoryItemListView(ObjectListView):
-    queryset = InventoryItem.objects.prefetch_related('device', 'manufacturer')
+    queryset = InventoryItem.objects.all()
     filterset = filters.InventoryItemFilterSet
     filterset_form = forms.InventoryItemFilterForm
     table = tables.InventoryItemTable
@@ -1994,9 +1990,7 @@ class DeviceBulkAddInventoryItemView(BulkComponentCreateView):
 #
 
 class CableListView(ObjectListView):
-    queryset = Cable.objects.prefetch_related(
-        'termination_a', 'termination_b'
-    )
+    queryset = Cable.objects.all()
     filterset = filters.CableFilterSet
     filterset_form = forms.CableFilterForm
     table = tables.CableTable
@@ -2145,9 +2139,7 @@ class CableBulkDeleteView(BulkDeleteView):
 #
 
 class ConsoleConnectionsListView(ObjectListView):
-    queryset = ConsolePort.objects.prefetch_related(
-        'device', '_path__destination'
-    ).filter(_path__isnull=False).order_by('device')
+    queryset = ConsolePort.objects.filter(_path__isnull=False).order_by('device')
     filterset = filters.ConsoleConnectionFilterSet
     filterset_form = forms.ConsoleConnectionFilterForm
     table = tables.ConsoleConnectionTable
@@ -2172,9 +2164,7 @@ class ConsoleConnectionsListView(ObjectListView):
 
 
 class PowerConnectionsListView(ObjectListView):
-    queryset = PowerPort.objects.prefetch_related(
-        'device', '_path__destination'
-    ).filter(_path__isnull=False).order_by('device')
+    queryset = PowerPort.objects.filter(_path__isnull=False).order_by('device')
     filterset = filters.PowerConnectionFilterSet
     filterset_form = forms.PowerConnectionFilterForm
     table = tables.PowerConnectionTable
@@ -2199,9 +2189,7 @@ class PowerConnectionsListView(ObjectListView):
 
 
 class InterfaceConnectionsListView(ObjectListView):
-    queryset = Interface.objects.prefetch_related(
-        'device', '_path__destination'
-    ).filter(
+    queryset = Interface.objects.filter(
         # Avoid duplicate connections by only selecting the lower PK in a connected pair
         _path__isnull=False,
         pk__lt=F('_path__destination_id')
@@ -2236,7 +2224,7 @@ class InterfaceConnectionsListView(ObjectListView):
 #
 
 class VirtualChassisListView(ObjectListView):
-    queryset = VirtualChassis.objects.prefetch_related('master').annotate(
+    queryset = VirtualChassis.objects.annotate(
         member_count=Count('members', distinct=True)
     ).order_by(*VirtualChassis._meta.ordering)
     table = tables.VirtualChassisTable
@@ -2466,9 +2454,7 @@ class VirtualChassisBulkDeleteView(BulkDeleteView):
 #
 
 class PowerPanelListView(ObjectListView):
-    queryset = PowerPanel.objects.prefetch_related(
-        'site', 'rack_group'
-    ).annotate(
+    queryset = PowerPanel.objects.annotate(
         powerfeed_count=Count('powerfeeds')
     ).order_by(*PowerPanel._meta.ordering)
     filterset = filters.PowerPanelFilterSet
@@ -2532,9 +2518,7 @@ class PowerPanelBulkDeleteView(BulkDeleteView):
 #
 
 class PowerFeedListView(ObjectListView):
-    queryset = PowerFeed.objects.prefetch_related(
-        'power_panel', 'rack'
-    )
+    queryset = PowerFeed.objects.all()
     filterset = filters.PowerFeedFilterSet
     filterset_form = forms.PowerFeedFilterForm
     table = tables.PowerFeedTable

+ 1 - 1
netbox/extras/views.py

@@ -173,7 +173,7 @@ class ObjectConfigContextView(ObjectView):
 #
 
 class ObjectChangeListView(ObjectListView):
-    queryset = ObjectChange.objects.prefetch_related('user', 'changed_object_type')
+    queryset = ObjectChange.objects.all()
     filterset = filters.ObjectChangeFilterSet
     filterset_form = forms.ObjectChangeFilterForm
     table = tables.ObjectChangeTable

+ 8 - 12
netbox/ipam/views.py

@@ -25,7 +25,7 @@ from .utils import add_available_ipaddresses, add_available_prefixes, add_availa
 #
 
 class VRFListView(ObjectListView):
-    queryset = VRF.objects.prefetch_related('tenant')
+    queryset = VRF.objects.all()
     filterset = filters.VRFFilterSet
     filterset_form = forms.VRFFilterForm
     table = tables.VRFTable
@@ -90,7 +90,7 @@ class VRFBulkDeleteView(BulkDeleteView):
 #
 
 class RouteTargetListView(ObjectListView):
-    queryset = RouteTarget.objects.prefetch_related('tenant')
+    queryset = RouteTarget.objects.all()
     filterset = filters.RouteTargetFilterSet
     filterset_form = forms.RouteTargetFilterForm
     table = tables.RouteTargetTable
@@ -184,7 +184,7 @@ class RIRBulkDeleteView(BulkDeleteView):
 #
 
 class AggregateListView(ObjectListView):
-    queryset = Aggregate.objects.prefetch_related('rir').annotate(
+    queryset = Aggregate.objects.annotate(
         child_count=RawSQL('SELECT COUNT(*) FROM ipam_prefix WHERE ipam_prefix.prefix <<= ipam_aggregate.prefix', ())
     ).order_by(*Aggregate._meta.ordering)
     filterset = filters.AggregateFilterSet
@@ -320,7 +320,7 @@ class RoleBulkDeleteView(BulkDeleteView):
 #
 
 class PrefixListView(ObjectListView):
-    queryset = Prefix.objects.prefetch_related('site', 'vrf__tenant', 'tenant', 'vlan', 'role').annotate_tree()
+    queryset = Prefix.objects.annotate_tree()
     filterset = filters.PrefixFilterSet
     filterset_form = forms.PrefixFilterForm
     table = tables.PrefixDetailTable
@@ -494,9 +494,7 @@ class PrefixBulkDeleteView(BulkDeleteView):
 #
 
 class IPAddressListView(ObjectListView):
-    queryset = IPAddress.objects.prefetch_related(
-        'vrf__tenant', 'tenant', 'nat_inside', 'assigned_object'
-    )
+    queryset = IPAddress.objects.all()
     filterset = filters.IPAddressFilterSet
     filterset_form = forms.IPAddressFilterForm
     table = tables.IPAddressDetailTable
@@ -653,7 +651,7 @@ class IPAddressBulkDeleteView(BulkDeleteView):
 #
 
 class VLANGroupListView(ObjectListView):
-    queryset = VLANGroup.objects.prefetch_related('site').annotate(
+    queryset = VLANGroup.objects.annotate(
         vlan_count=Count('vlans')
     ).order_by(*VLANGroup._meta.ordering)
     filterset = filters.VLANGroupFilterSet
@@ -728,9 +726,7 @@ class VLANGroupVLANsView(ObjectView):
 #
 
 class VLANListView(ObjectListView):
-    queryset = VLAN.objects.prefetch_related(
-        'site', 'group', 'tenant', 'role', 'prefixes'
-    )
+    queryset = VLAN.objects.all()
     filterset = filters.VLANFilterSet
     filterset_form = forms.VLANFilterForm
     table = tables.VLANDetailTable
@@ -830,7 +826,7 @@ class VLANBulkDeleteView(BulkDeleteView):
 #
 
 class ServiceListView(ObjectListView):
-    queryset = Service.objects.prefetch_related('device', 'virtual_machine')
+    queryset = Service.objects.all()
     filterset = filters.ServiceFilterSet
     filterset_form = forms.ServiceFilterForm
     table = tables.ServiceTable

+ 1 - 1
netbox/secrets/views.py

@@ -58,7 +58,7 @@ class SecretRoleBulkDeleteView(BulkDeleteView):
 #
 
 class SecretListView(ObjectListView):
-    queryset = Secret.objects.prefetch_related('role', 'tags')
+    queryset = Secret.objects.all()
     filterset = filters.SecretFilterSet
     filterset_form = forms.SecretFilterForm
     table = tables.SecretTable

+ 1 - 1
netbox/tenancy/views.py

@@ -58,7 +58,7 @@ class TenantGroupBulkDeleteView(BulkDeleteView):
 #
 
 class TenantListView(ObjectListView):
-    queryset = Tenant.objects.prefetch_related('group')
+    queryset = Tenant.objects.all()
     filterset = filters.TenantFilterSet
     filterset_form = forms.TenantFilterForm
     table = tables.TenantTable

+ 2 - 1
netbox/utilities/views.py

@@ -195,7 +195,8 @@ class ObjectListView(ObjectPermissionRequiredMixin, View):
     """
     List a series of objects.
 
-    queryset: The queryset of objects to display
+    queryset: The queryset of objects to display. Note: Prefetching related objects is not necessary, as the
+      table will prefetch objects as needed depending on the columns being displayed.
     filter: A django-filter FilterSet that is applied to the queryset
     filter_form: The form used to render filter options
     table: The django-tables2 Table used to render the objects list

+ 3 - 3
netbox/virtualization/views.py

@@ -83,7 +83,7 @@ class ClusterGroupBulkDeleteView(BulkDeleteView):
 
 class ClusterListView(ObjectListView):
     permission_required = 'virtualization.view_cluster'
-    queryset = Cluster.objects.prefetch_related('type', 'group', 'site', 'tenant').annotate(
+    queryset = Cluster.objects.annotate(
         device_count=get_subquery(Device, 'cluster'),
         vm_count=get_subquery(VirtualMachine, 'cluster')
     )
@@ -230,7 +230,7 @@ class ClusterRemoveDevicesView(ObjectEditView):
 #
 
 class VirtualMachineListView(ObjectListView):
-    queryset = VirtualMachine.objects.prefetch_related('cluster', 'tenant', 'role', 'primary_ip4', 'primary_ip6')
+    queryset = VirtualMachine.objects.all()
     filterset = filters.VirtualMachineFilterSet
     filterset_form = forms.VirtualMachineFilterForm
     table = tables.VirtualMachineDetailTable
@@ -311,7 +311,7 @@ class VirtualMachineBulkDeleteView(BulkDeleteView):
 #
 
 class VMInterfaceListView(ObjectListView):
-    queryset = VMInterface.objects.prefetch_related('virtual_machine')
+    queryset = VMInterface.objects.all()
     filterset = filters.VMInterfaceFilterSet
     filterset_form = forms.VMInterfaceFilterForm
     table = tables.VMInterfaceTable