Skip to content

Commit 9628872

Browse files
committed
fixed N+1 problems on /itemsets and /weapons
1 parent 8a3f15a commit 9628872

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

api_v2/views/item.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class Meta:
7070
}
7171

7272

73-
class ItemSetViewSet(viewsets.ReadOnlyModelViewSet):
73+
class ItemSetViewSet(EagerLoadingMixin, viewsets.ReadOnlyModelViewSet):
7474
""""
7575
list: API Endpoint for returning a set of itemsets.
7676
@@ -80,6 +80,17 @@ class ItemSetViewSet(viewsets.ReadOnlyModelViewSet):
8080
serializer_class = serializers.ItemSetSerializer
8181
filterset_class = ItemSetFilterSet
8282

83+
prefetch_related_fields = [
84+
'items',
85+
'items__document',
86+
'items__damage_resistances',
87+
'items__damage_immunities',
88+
'items__damage_vulnerabilities',
89+
'items__armor',
90+
'items__category',
91+
'items__weapon',
92+
'items__weapon__document'
93+
]
8394

8495
class ItemCategoryViewSet(viewsets.ReadOnlyModelViewSet):
8596
""""
@@ -119,7 +130,7 @@ class Meta:
119130
}
120131

121132

122-
class WeaponViewSet(viewsets.ReadOnlyModelViewSet):
133+
class WeaponViewSet(EagerLoadingMixin, viewsets.ReadOnlyModelViewSet):
123134
"""
124135
list: API endpoint for returning a list of weapons.
125136
retrieve: API endpoint for returning a particular weapon.
@@ -128,6 +139,7 @@ class WeaponViewSet(viewsets.ReadOnlyModelViewSet):
128139
serializer_class = serializers.WeaponSerializer
129140
filterset_class = WeaponFilterSet
130141

142+
prefetch_related_fields = ['document']
131143

132144
class ArmorFilterSet(FilterSet):
133145

0 commit comments

Comments
 (0)