From 483ad256a8c12cd3fa391677c78b34dac0ae2759 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 27 Jul 2016 14:40:19 -0400 Subject: [PATCH] Miscellaneous API query optimizations --- netbox/dcim/api/views.py | 15 ++++++++------- netbox/ipam/api/views.py | 8 ++++---- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 3775eda52..e14eb8f87 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -47,7 +47,7 @@ class RackGroupListView(generics.ListAPIView): """ List all rack groups """ - queryset = RackGroup.objects.all() + queryset = RackGroup.objects.select_related('site') serializer_class = serializers.RackGroupSerializer filter_class = filters.RackGroupFilter @@ -56,7 +56,7 @@ class RackGroupDetailView(generics.RetrieveAPIView): """ Retrieve a single rack group """ - queryset = RackGroup.objects.all() + queryset = RackGroup.objects.select_related('site') serializer_class = serializers.RackGroupSerializer @@ -68,7 +68,7 @@ class RackListView(generics.ListAPIView): """ List racks (filterable) """ - queryset = Rack.objects.select_related('site', 'tenant') + queryset = Rack.objects.select_related('site', 'group', 'tenant') serializer_class = serializers.RackSerializer filter_class = filters.RackFilter @@ -77,7 +77,7 @@ class RackDetailView(generics.RetrieveAPIView): """ Retrieve a single rack """ - queryset = Rack.objects.select_related('site', 'tenant') + queryset = Rack.objects.select_related('site', 'group', 'tenant') serializer_class = serializers.RackDetailSerializer @@ -194,8 +194,8 @@ class DeviceListView(generics.ListAPIView): List devices (filterable) """ queryset = Device.objects.select_related('device_type__manufacturer', 'device_role', 'tenant', 'platform', - 'rack__site').prefetch_related('primary_ip4__nat_outside', - 'primary_ip6__nat_outside') + 'rack__site', 'parent_bay').prefetch_related('primary_ip4__nat_outside', + 'primary_ip6__nat_outside') serializer_class = serializers.DeviceSerializer filter_class = filters.DeviceFilter renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES + [BINDZoneRenderer, FlatJSONRenderer] @@ -205,7 +205,8 @@ class DeviceDetailView(generics.RetrieveAPIView): """ Retrieve a single device """ - queryset = Device.objects.all() + queryset = Device.objects.select_related('device_type__manufacturer', 'device_role', 'tenant', 'platform', + 'rack__site', 'parent_bay') serializer_class = serializers.DeviceSerializer diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index baa1050cd..36bf1158d 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -140,7 +140,7 @@ class VLANGroupListView(generics.ListAPIView): """ List all VLAN groups """ - queryset = VLANGroup.objects.all() + queryset = VLANGroup.objects.select_related('site') serializer_class = serializers.VLANGroupSerializer filter_class = filters.VLANGroupFilter @@ -149,7 +149,7 @@ class VLANGroupDetailView(generics.RetrieveAPIView): """ Retrieve a single VLAN group """ - queryset = VLANGroup.objects.all() + queryset = VLANGroup.objects.select_related('site') serializer_class = serializers.VLANGroupSerializer @@ -161,7 +161,7 @@ class VLANListView(generics.ListAPIView): """ List VLANs (filterable) """ - queryset = VLAN.objects.select_related('site', 'tenant', 'role') + queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role') serializer_class = serializers.VLANSerializer filter_class = filters.VLANFilter @@ -170,5 +170,5 @@ class VLANDetailView(generics.RetrieveAPIView): """ Retrieve a single VLAN """ - queryset = VLAN.objects.select_related('site', 'tenant', 'role') + queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role') serializer_class = serializers.VLANSerializer