Возьмите пример из документации DRF Сериализация внешнего ключа :
class TrackSerializer(serializers.ModelSerializer):
class Meta:
model = Track
fields = ['order', 'title', 'duration']
class AlbumSerializer(serializers.ModelSerializer):
tracks = TrackSerializer(many=True, read_only=True)
class Meta:
model = Album
fields = ['album_name', 'artist', 'tracks']
Я хочу изменить это, чтобы дополнительно сериализовать треки на основе параметра запроса. То, что я пробовал интуитивно, должно работать, но не работает:
class AlbumSerializer(serializers.ModelSerializer):
tracks = serializers.SerialzerMethodField()
class Meta:
model = Album
fields = ['album_name', 'artist', 'tracks']
def get_tracks(self, value):
if self.context.get('show_tracks'):
return TrackSerializer(many=True, read_only=True)
Это вызывает ошибку: TrackSerializer не JSON сериализуемый
Любой способ выполнить это logi c в сериализаторе?