AC-655 Add select_related to reduce number of queries for inventory views.

This commit is contained in:
Chris Church 2013-11-25 15:43:56 -05:00
parent dc4b7d0960
commit f29809a807
3 changed files with 6 additions and 3 deletions

View File

@ -570,6 +570,7 @@ class GroupTreeSerializer(GroupSerializer):
if obj is None:
return {}
children_qs = obj.children.filter(active=True)
children_qs = children_qs.select_related('inventory', 'inventory_source')
return GroupTreeSerializer(children_qs, many=True).data

View File

@ -790,6 +790,7 @@ class InventoryTreeView(RetrieveAPIView):
def retrieve(self, request, *args, **kwargs):
inventory = self.get_object()
groups_qs = inventory.root_groups.filter(active=True)
groups_qs = groups_qs.select_related('inventory', 'inventory_source')
data = GroupTreeSerializer(groups_qs, many=True).data
return Response(data)

View File

@ -389,7 +389,7 @@ class GroupAccess(BaseAccess):
def get_queryset(self):
qs = self.model.objects.filter(active=True).distinct()
qs = qs.select_related('created_by', 'inventory')
qs = qs.select_related('created_by', 'inventory', 'inventory_source')
qs = qs.prefetch_related('parents', 'children')
inventories_qs = self.user.get_queryset(Inventory)
return qs.filter(inventory__in=inventories_qs)
@ -443,7 +443,7 @@ class InventorySourceAccess(BaseAccess):
def get_queryset(self):
qs = self.model.objects.filter(active=True).distinct()
qs = qs.select_related('created_by', 'group')
qs = qs.select_related('created_by', 'group', 'inventory')
inventories_qs = self.user.get_queryset(Inventory)
return qs.filter(Q(inventory__in=inventories_qs) |
Q(group__inventory__in=inventories_qs))
@ -482,7 +482,8 @@ class InventoryUpdateAccess(BaseAccess):
def get_queryset(self):
qs = InventoryUpdate.objects.filter(active=True).distinct()
qs = qs.select_related('created_by', 'group')
qs = qs.select_related('created_by', 'inventory_source__group',
'inventory_source__inventory')
inventory_sources_qs = self.user.get_queryset(InventorySource)
return qs.filter(inventory_source__in=inventory_sources_qs)