1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Remove extraneous prefetch_related() calls from object list views

This commit is contained in:
Jeremy Stretch
2020-10-30 16:52:40 -04:00
parent 97c8306eeb
commit 9a9babfc35
8 changed files with 39 additions and 58 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -195,7 +195,8 @@ class ObjectListView(ObjectPermissionRequiredMixin, View):
""" """
List a series of objects. 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: A django-filter FilterSet that is applied to the queryset
filter_form: The form used to render filter options filter_form: The form used to render filter options
table: The django-tables2 Table used to render the objects list table: The django-tables2 Table used to render the objects list

View File

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