我想通过直接使用嵌套模型的字段来序列化只有一个字段的嵌套模型字段。
以下代码应该可以解释这种情况:
# 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"
]
}
如何编写一个序列化器来为标签执行此操作?
最佳答案
您可以使用SlugRelatedField
:
class SceneSerializer(serializers.ModelSerializer):
tags = serializers.SlugRelatedField(
many=True,
read_only=True,
slug_field='title'
)
class Meta:
model = Scene
fields = ('id', 'title', 'tags',)
关于python - Django 仅序列化一个字段而不是相关字段中的整个模型(只读),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56950062/