Как дополнительно сериализовать внешний ключ на основе параметра запроса в Django Rest Framework? - PullRequest
0 голосов
/ 28 мая 2020

Возьмите пример из документации 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 в сериализаторе?

...