gpt4 book ai didi

django-rest ModelSerializer 选择要在嵌套关系中显示的字段

转载 作者:行者123 更新时间:2023-12-05 01:39:54 26 4
gpt4 key购买 nike

我将在这方面引用 django-rest-framework API 示例。假设我们有两个定义如下的序列化程序。

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']

现在,如果我执行 GET 请求并检索一个 Album 实例,它将返回一个响应,其中包含一个 Track 实例列表,其中每个实例都包含所有轨道领域。有没有办法只返回 Track 模型中选定的字段子集?例如,仅将 titleduration 字段返回给客户端,而不返回 'order' 字段。

最佳答案

您可以为您的专辑制作一个特定的TrackSerializer,例如:

class TrackSerializer(serializers.ModelSerializer):
class Meta:
model = Track
fields = ['order', 'title', 'duration']

class <b>TrackForAlbumSerializer</b>(serializers.ModelSerializer):
class Meta:
model = Track
fields = ['title', 'duration']

class AlbumSerializer(serializers.ModelSerializer):
tracks = <b>TrackForAlbumSerializer</b>(many=True, read_only=True)

class Meta:
model = Album
fields = ['album_name', 'artist', 'tracks']

您不必为每个模型定义一个序列化器,您可以定义多个序列化器,每个序列化器用于一个专门的任务。

关于django-rest ModelSerializer 选择要在嵌套关系中显示的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57490227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com