| 
7 | 7 | from api_v2 import models  | 
8 | 8 | 
 
  | 
9 | 9 | from .abstracts import GameContentSerializer  | 
10 |  | -from .damagetype import DamageTypeSerializer  | 
11 |  | -from .condition import ConditionSerializer  | 
 | 10 | +from .damagetype import DamageTypeSummarySerializer  | 
 | 11 | +from .condition import ConditionSummarySerializer  | 
12 | 12 | from .document import DocumentSummarySerializer  | 
13 | 13 | from .language import LanguageSummarySerializer  | 
14 |  | -from .environment import EnvironmentSerializer  | 
15 |  | -from .size import SizeSerializer  | 
 | 14 | +from .environment import EnvironmentSummarySerializer  | 
 | 15 | +from .size import SizeSummarySerializer  | 
16 | 16 | from drf_spectacular.utils import extend_schema_field, inline_serializer  | 
17 | 17 | from drf_spectacular.types import OpenApiTypes  | 
18 | 18 | 
 
  | 
@@ -47,6 +47,15 @@ class Meta:  | 
47 | 47 |         model = models.CreatureType  | 
48 | 48 |         fields = '__all__'  | 
49 | 49 | 
 
  | 
 | 50 | +class CreatureTypeSummarySerializer(serializers.ModelSerializer):  | 
 | 51 | +    '''  | 
 | 52 | +    A slimmer CreatureTypeSerializer, designed to serialize CreatureType FKs on  | 
 | 53 | +    other serializers . Not intended to be used directly with in a ModelViewset.  | 
 | 54 | +    '''  | 
 | 55 | +    class Meta:  | 
 | 56 | +        model = models.CreatureType  | 
 | 57 | +        fields = ['name', 'key', 'url']  | 
 | 58 | + | 
50 | 59 | 
 
  | 
51 | 60 | class CreatureTraitSerializer(GameContentSerializer):  | 
52 | 61 |     '''Serializer for the Creature Trait object'''  | 
@@ -74,45 +83,45 @@ class CreatureSerializer(GameContentSerializer):  | 
74 | 83 |     saving_throws_all = serializers.SerializerMethodField()  | 
75 | 84 |     skill_bonuses = serializers.SerializerMethodField()  | 
76 | 85 |     skill_bonuses_all = serializers.SerializerMethodField()  | 
77 |  | -    damage_immunities = DamageTypeSerializer(many=True)  | 
78 |  | -    damage_resistances = DamageTypeSerializer(many=True)  | 
79 |  | -    damage_vulnerabilities = DamageTypeSerializer(many=True)  | 
80 |  | -    condition_immunities = ConditionSerializer(many=True)  | 
 | 86 | +    damage_immunities = DamageTypeSummarySerializer(many=True)  | 
 | 87 | +    damage_resistances = DamageTypeSummarySerializer(many=True)  | 
 | 88 | +    damage_vulnerabilities = DamageTypeSummarySerializer(many=True)  | 
 | 89 | +    condition_immunities = ConditionSummarySerializer(many=True)  | 
81 | 90 |     actions = CreatureActionSerializer(many=True)  | 
82 | 91 |     traits = CreatureTraitSerializer(many=True, read_only=True)  | 
83 | 92 |     speed = serializers.SerializerMethodField()  | 
84 | 93 |     speed_all = serializers.SerializerMethodField()  | 
85 | 94 |     challenge_rating_text = serializers.SerializerMethodField()  | 
86 | 95 |     experience_points = serializers.SerializerMethodField()  | 
87 | 96 |     document = DocumentSummarySerializer()  | 
88 |  | -    type = CreatureTypeSerializer()  | 
89 |  | -    size = SizeSerializer()  | 
 | 97 | +    type = CreatureTypeSummarySerializer()  | 
 | 98 | +    size = SizeSummarySerializer()  | 
90 | 99 |     languages = CreatureLanguageSerializer(source='*')  | 
91 |  | -    environments = EnvironmentSerializer(many=True)  | 
 | 100 | +    environments = EnvironmentSummarySerializer(many=True)  | 
92 | 101 |     initiative_bonus = serializers.SerializerMethodField()  | 
93 | 102 | 
 
  | 
94 | 103 |     class Meta:  | 
95 | 104 |         '''Serializer meta options.'''  | 
96 | 105 |         model = models.Creature  | 
97 | 106 |         fields = [  | 
98 | 107 |             'url',  | 
99 |  | -            'document',  | 
100 | 108 |             'key',  | 
101 | 109 |             'name',  | 
 | 110 | +            'document',  | 
 | 111 | +            'type',  | 
102 | 112 |             'size',  | 
 | 113 | +            'challenge_rating_decimal',  | 
 | 114 | +            'challenge_rating_text',  | 
103 | 115 |             'speed',  | 
104 | 116 |             'speed_all',  | 
105 | 117 |             'category',  | 
106 | 118 |             'subcategory',  | 
107 |  | -            'type',  | 
108 | 119 |             'alignment',  | 
109 | 120 |             'languages',  | 
110 | 121 |             'armor_class',  | 
111 | 122 |             'armor_detail',  | 
112 | 123 |             'hit_points',  | 
113 | 124 |             'hit_dice',  | 
114 |  | -            'challenge_rating_decimal',  | 
115 |  | -            'challenge_rating_text',  | 
116 | 125 |             'experience_points',  | 
117 | 126 |             'ability_scores',  | 
118 | 127 |             'modifiers',  | 
 | 
0 commit comments