Skip to content

Commit d956978

Browse files
committed
fixed N+1 problem on 'traits' field of Creature view
1 parent 7f3a1a9 commit d956978

File tree

2 files changed

+44
-44
lines changed

2 files changed

+44
-44
lines changed

api_v2/serializers/creature.py

Lines changed: 42 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -80,49 +80,48 @@ class CreatureSerializer(GameContentSerializer):
8080
class Meta:
8181
'''Serializer meta options.'''
8282
model = models.Creature
83-
fields = '__all__'
84-
# fields = [
85-
# 'url',
86-
# 'document',
87-
# 'key',
88-
# 'name',
89-
# 'size',
90-
# 'speed',
91-
# 'speed_all',
92-
# 'category',
93-
# 'subcategory',
94-
# 'type',
95-
# 'alignment',
96-
# 'languages',
97-
# 'armor_class',
98-
# 'hit_points',
99-
# 'hit_dice',
100-
# 'challenge_rating_decimal',
101-
# 'challenge_rating_text',
102-
# 'experience_points',
103-
# 'ability_scores',
104-
# 'modifiers',
105-
# 'saving_throws',
106-
# 'saving_throws_all',
107-
# 'skill_bonuses',
108-
# 'skill_bonuses_all',
109-
# 'passive_perception',
110-
# 'damage_immunities',
111-
# 'nonmagical_attack_immunity',
112-
# 'damage_resistances',
113-
# 'nonmagical_attack_resistance',
114-
# 'damage_vulnerabilities',
115-
# 'condition_immunities',
116-
# 'normal_sight_range',
117-
# 'darkvision_range',
118-
# 'blindsight_range',
119-
# 'tremorsense_range',
120-
# 'truesight_range',
121-
# 'actions',
122-
# 'traits',
123-
# 'creaturesets',
124-
# 'environments'
125-
# ]
83+
fields = [
84+
'url',
85+
'document',
86+
'key',
87+
'name',
88+
'size',
89+
'speed',
90+
'speed_all',
91+
'category',
92+
'subcategory',
93+
'type',
94+
'alignment',
95+
'languages',
96+
'armor_class',
97+
'hit_points',
98+
'hit_dice',
99+
'challenge_rating_decimal',
100+
'challenge_rating_text',
101+
'experience_points',
102+
'ability_scores',
103+
'modifiers',
104+
'saving_throws',
105+
'saving_throws_all',
106+
'skill_bonuses',
107+
'skill_bonuses_all',
108+
'passive_perception',
109+
'damage_immunities',
110+
'nonmagical_attack_immunity',
111+
'damage_resistances',
112+
'nonmagical_attack_resistance',
113+
'damage_vulnerabilities',
114+
'condition_immunities',
115+
'normal_sight_range',
116+
'darkvision_range',
117+
'blindsight_range',
118+
'tremorsense_range',
119+
'truesight_range',
120+
'actions',
121+
'traits',
122+
'creaturesets',
123+
'environments'
124+
]
126125

127126
@extend_schema_field(inline_serializer(
128127
name="ability_scores",

api_v2/views/creature.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ def setup_eager_loading(queryset, action, depth):
8181
prefetches = [
8282
'creatureaction_set', 'condition_immunities', 'damage_immunities',
8383
'damage_vulnerabilities', 'damage_resistances', 'environments',
84-
'document'
84+
'document', 'traits', 'document', 'document__publisher', 'document__gamesystem',
85+
'document__licenses', 'languages__document'
8586
]
8687

8788
if depth >= 2:

0 commit comments

Comments
 (0)