我正在试图在嵌套的序列化程序中创建自定义URL。 这是我的serializer.py - >
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"
}
]
我需要这个来发送个人资料来打电话,例如:转到“Rami Malek”个人资料,并将您的名字作为网址,或者显示它并用您的主要密钥显示网址。
如果你能帮助我,非常感谢。
答案 0 :(得分: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')
希望它有效。