2017-05-17 1 views
0

Sagen, ich habe Modell Team und es hat eine Eins-zu-Viele-Beziehung mit Player und StandinKarte zwei Felder in einen mit DRF

ich sie so serialisiert werden kann:

class TeamSerializer(serializers.ModelSerializer): 
    ... 
    players = PlayerSerializer(many=True) 
    standins = StandinSerializer(many=True) 

    class Meta: 
     model = Team 
     fields = '__all__' 

So Ausgang sein:

{ 
    "id": 17, 
    ... 
    "players": [...], 
    "standins": [...] 
} 

Wie kann ich bekommen:

{ 
    "id": 17, 
    ... 
    "roster": { 
     "players": [...], 
     "standins": [...] 
    } 
} 

Antwort

1

die to_representation Methode auf sereializer außer Kraft setzen:

def to_representation(self, instance): 
    ret = super(TeamSerializer, self).to_representation(instance) 
    ret['roster'] = { 
     'players': ret['players'], 
     'standins': ret['standins'] 
     } 
    del ret['players'] 
    del ret['standins'] 
    return ret