use*_*546 11 django django-rest-framework
我有这个模型
class Track(models.Model):
album = models.ForeignKey(Album)
Run Code Online (Sandbox Code Playgroud)
现在我TrackSerializer想要获得专辑的名称.
class TrackSerializer(serializers.ModelSerializer):
class Meta:
model = Track
fields = ('album__name')
Run Code Online (Sandbox Code Playgroud)
它不起作用
我不想为此声明AlbumSerializer.有没有任何方法可以做到这一点,而无需转发新的序列化程序
Kev*_*own 15
您可以在您的创建领域做到这一点TrackSerializer的是具有自定义source检索的专辑名称.
将用于填充字段的属性的名称.可能是一个只接受自身参数的方法,例如URLField('get_absolute_url'),或者可以使用点符号来遍历属性,例如EmailField(source ='user.email').
因此,在您的情况下,您的字段需要添加(album_name在本例中)自定义source集
class TrackSerializer(serializers.ModelSerializer):
album_name = serializers.CharField(read_only=True, source="album.name")
class Meta:
model = Track
fields = ('album_name", )
Run Code Online (Sandbox Code Playgroud)
这将包括键下输出中的专辑名称album_name.
小智 5
要包括父关系,您只需要包括其序列化器并将其包括在字段列表中。
Class TrackSerializer(ModelSerializer):
album = AlbumSerializer()
class Meta:
model = Track
fields = ('name', 'year', 'album',)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6348 次 |
| 最近记录: |