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):
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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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