Moh*_* hp 3 django django-rest-framework
我将参考 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']
Run Code Online (Sandbox Code Playgroud)
现在,如果我执行 GET 请求并检索一个Album实例,它将返回一个响应,其中包含实例列表Track,其中每个实例包含 Track 的所有字段。有没有办法只返回模型中选定的字段子集Track?例如,仅将title和duration字段返回给客户端,而不返回 'order' 字段。
TrackSerializer您可以为您的制定具体的Album,例如:
class TrackSerializer(serializers.ModelSerializer):
class Meta:
model = Track
fields = ['order', 'title', 'duration']
class TrackForAlbumSerializer(serializers.ModelSerializer):
class Meta:
model = Track
fields = ['title', 'duration']
class AlbumSerializer(serializers.ModelSerializer):
tracks = TrackForAlbumSerializer(many=True, read_only=True)
class Meta:
model = Album
fields = ['album_name', 'artist', 'tracks']Run Code Online (Sandbox Code Playgroud)
您不必为每个模型定义一个序列化器,您可以定义多个序列化器,每个序列化器都用于专门的任务。
| 归档时间: |
|
| 查看次数: |
1320 次 |
| 最近记录: |