2017-02-16 24 views
1

ネストされたシリアライザでカスタムURLを作成しようとしています。 これは私のserializer.pyある - >Django Rest FrameworkネストされたシリアライザのカスタムURL

class SerieSerializer(serializers.HyperlinkedModelSerializer): 
created_by = serializers.ReadOnlyField(source='created_by.username') 
picture = serializers.ImageField() 

class Meta: 
    model = Serie 
    fields = ('url', 'name', 'genre', 'director', 'release', 'seasons', 'review', 'picture', 'actors', 'created_by') 

、これが結果です:

[ 
{ 
    "url": "http://localhost:8000/series/1/", 
    "name": "Mr. Robot", 
    "genre": "DRAMA", 
    "director": "Sam Esmail", 
    "release": "2015-06-24", 
    "seasons": 2, 
    "review": "Mr. Robot es una serie de televisión estadounidense creada por Sam Esmail. Se estrenó el 24 de junio de 2015 en la cadena USA Network. El mismo día la serie se renovó para una segunda temporada, estrenada el 13 de julio de 2016. El 16 de agosto del mismo año Mr. Robot fue renovado para una tercera temporada a estrenarse en 2017.", 
    "picture": "http://res.cloudinary.com/dqohbm9y4/image/upload/v1487190362/uasfb8maqzh9urp4bvrd.png", 
    "actors": [ 
     "http://localhost:8000/actors/3/", 
     "http://localhost:8000/actors/4/" 
    ], 
    "created_by": "mosthated" 
} 
] 

しかし、私は、 "俳優" でこのようなもの、必要があります:私は必要

[ 
{ 
    "url": "http://localhost:8000/series/1/", 
    "name": "Mr. Robot", 
    "genre": "DRAMA", 
    "director": "Sam Esmail", 
    "release": "2015-06-24", 
    "seasons": 2, 
    "review": "Mr. Robot es una serie de televisión estadounidense creada por Sam Esmail. Se estrenó el 24 de junio de 2015 en la cadena USA Network. El mismo día la serie se renovó para una segunda temporada, estrenada el 13 de julio de 2016. El 16 de agosto del mismo año Mr. Robot fue renovado para una tercera temporada a estrenarse en 2017.", 
    "picture": "http://res.cloudinary.com/dqohbm9y4/image/upload/v1487190362/uasfb8maqzh9urp4bvrd.png", 
    "actors": [ 
     "Rami Malek": "http://localhost:8000/actors/3/", 
     "Christian Slater": "http://localhost:8000/actors/4/" 
    ], 
    "created_by": "mosthated" 
} 
] 

をあなたの名前をURLとして "Rami Malek"プロフィールに移動するか、それを表示し、主キーでURLを表示します。

お手伝いができれば、どうもありがとうございます。

答えて

1

下記のようにcustomActorSerializerを作成し、SerieSerializerとリンクします。

class ActorSerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model = Actor 
     fields = ('url','actor_name') 

class SerieSerializer(serializers.HyperlinkedModelSerializer): 
    created_by = serializers.ReadOnlyField(source='created_by.username') 
    picture = serializers.ImageField() 
    actors = ActorSerializer(many=True) 

    class Meta: 
     model = Serie 
     fields = ('url', 'name', 'genre', 'director', 'release', 'seasons', 'review', 'picture', 'actors', 'created_by') 

希望します。

+1

うん、それは動作します!どうもありがとうございます!!!!! –

関連する問題