【发布时间】:2016-08-21 19:19:15
【问题描述】:
目前我有:
class PlayerSerializer(serializers.HyperlinkedModelSerializer):
id = serializers.ReadOnlyField()
class Meta:
model = Player
def __init__(self, *args, **kwargs):
super(PlayerSerializer, self).__init__(*args, **kwargs)
self.is_full = self.context['request'].query_params.get('full', False)
if not self.is_full:
base_fields = ['nation', 'club', 'slug', 'common_name', 'image', 'position', 'quality', 'overall_rating',
'card_att_1', 'card_att_2', 'card_att_3', 'card_att_4', 'card_att_5', 'card_att_6']
for field in self.fields:
if field not in base_fields:
self.fields.pop(field)
self.fields['nation'] = NationSerializer(is_full=self.is_full)
self.fields['league'] = LeagueSerializer(is_full=self.is_full)
self.fields['club'] = ClubSerializer(is_full=self.is_full)
效果很好,但 ClubSerializer 有
class ClubSerializer(serializers.HyperlinkedModelSerializer):
id = serializers.ReadOnlyField()
league = LeagueSerializer()
我希望LeagueSerializer 具有基于请求查询参数值的字段。是否只是不将其作为 kwarg 传递并单独对每个 Serializer 进行 self.is_full = self.context['request'].query_params.get('full', False) 检查的情况?
【问题讨论】:
标签: django django-rest-framework