Miscellaneous API query optimizations

This commit is contained in:
Jeremy Stretch 2016-07-27 14:40:19 -04:00
parent 618566abe8
commit 483ad256a8
2 changed files with 12 additions and 11 deletions

View File

@ -47,7 +47,7 @@ class RackGroupListView(generics.ListAPIView):
""" """
List all rack groups List all rack groups
""" """
queryset = RackGroup.objects.all() queryset = RackGroup.objects.select_related('site')
serializer_class = serializers.RackGroupSerializer serializer_class = serializers.RackGroupSerializer
filter_class = filters.RackGroupFilter filter_class = filters.RackGroupFilter
@ -56,7 +56,7 @@ class RackGroupDetailView(generics.RetrieveAPIView):
""" """
Retrieve a single rack group Retrieve a single rack group
""" """
queryset = RackGroup.objects.all() queryset = RackGroup.objects.select_related('site')
serializer_class = serializers.RackGroupSerializer serializer_class = serializers.RackGroupSerializer
@ -68,7 +68,7 @@ class RackListView(generics.ListAPIView):
""" """
List racks (filterable) List racks (filterable)
""" """
queryset = Rack.objects.select_related('site', 'tenant') queryset = Rack.objects.select_related('site', 'group', 'tenant')
serializer_class = serializers.RackSerializer serializer_class = serializers.RackSerializer
filter_class = filters.RackFilter filter_class = filters.RackFilter
@ -77,7 +77,7 @@ class RackDetailView(generics.RetrieveAPIView):
""" """
Retrieve a single rack Retrieve a single rack
""" """
queryset = Rack.objects.select_related('site', 'tenant') queryset = Rack.objects.select_related('site', 'group', 'tenant')
serializer_class = serializers.RackDetailSerializer serializer_class = serializers.RackDetailSerializer
@ -194,8 +194,8 @@ class DeviceListView(generics.ListAPIView):
List devices (filterable) List devices (filterable)
""" """
queryset = Device.objects.select_related('device_type__manufacturer', 'device_role', 'tenant', 'platform', queryset = Device.objects.select_related('device_type__manufacturer', 'device_role', 'tenant', 'platform',
'rack__site').prefetch_related('primary_ip4__nat_outside', 'rack__site', 'parent_bay').prefetch_related('primary_ip4__nat_outside',
'primary_ip6__nat_outside') 'primary_ip6__nat_outside')
serializer_class = serializers.DeviceSerializer serializer_class = serializers.DeviceSerializer
filter_class = filters.DeviceFilter filter_class = filters.DeviceFilter
renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES + [BINDZoneRenderer, FlatJSONRenderer] renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES + [BINDZoneRenderer, FlatJSONRenderer]
@ -205,7 +205,8 @@ class DeviceDetailView(generics.RetrieveAPIView):
""" """
Retrieve a single device 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 serializer_class = serializers.DeviceSerializer

View File

@ -140,7 +140,7 @@ class VLANGroupListView(generics.ListAPIView):
""" """
List all VLAN groups List all VLAN groups
""" """
queryset = VLANGroup.objects.all() queryset = VLANGroup.objects.select_related('site')
serializer_class = serializers.VLANGroupSerializer serializer_class = serializers.VLANGroupSerializer
filter_class = filters.VLANGroupFilter filter_class = filters.VLANGroupFilter
@ -149,7 +149,7 @@ class VLANGroupDetailView(generics.RetrieveAPIView):
""" """
Retrieve a single VLAN group Retrieve a single VLAN group
""" """
queryset = VLANGroup.objects.all() queryset = VLANGroup.objects.select_related('site')
serializer_class = serializers.VLANGroupSerializer serializer_class = serializers.VLANGroupSerializer
@ -161,7 +161,7 @@ class VLANListView(generics.ListAPIView):
""" """
List VLANs (filterable) List VLANs (filterable)
""" """
queryset = VLAN.objects.select_related('site', 'tenant', 'role') queryset = VLAN.objects.select_related('site', 'group', 'tenant', 'role')
serializer_class = serializers.VLANSerializer serializer_class = serializers.VLANSerializer
filter_class = filters.VLANFilter filter_class = filters.VLANFilter
@ -170,5 +170,5 @@ class VLANDetailView(generics.RetrieveAPIView):
""" """
Retrieve a single VLAN 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 serializer_class = serializers.VLANSerializer