我想通过直接使用嵌套模型的字段来序列化只有一个字段的嵌套模型字段。
以下代码应说明这种情况:
# models
class Tag(models.Model):
title = models.CharField(max_length=255, unique=True)
class Scene(models.Model):
title = models.CharField(max_length=255, unique=True)
tags = models.ManyToManyField(Tag, blank=True)
# serializers
class SceneSerializer(serializers.ModelSerializer):
class Meta:
model = Scene
fields = ('id', 'title', 'tags',)
read_only_fields = ('tags',)
如果使用则输出以下内容:
{
"id": 1,
"title": "yolol",
"tags": [
1,
2
]
}
我想要的是以下输出(使用Tag.title而不是主键):
{
"id": 1,
"title": "A Scene",
"tags": [
"3D",
"Industry"
]
}
如何编写一个用于标签的序列化器?
答案 0 :(得分:1)
您可以使用SlugRelatedField
:
class SceneSerializer(serializers.ModelSerializer):
tags = serializers.SlugRelatedField(
many=True,
read_only=True,
slug_field='title'
)
class Meta:
model = Scene
fields = ('id', 'title', 'tags',)