簡體   English   中英

Django 僅序列化一個字段而不是相關字段中的整個模型(只讀)

[英]Django serialize one field only instead of whole model in related fields (readonly)

我想通過直接使用嵌套模型的字段來序列化只有一個字段的嵌套模型字段。

以下代碼應該解釋這種情況:

# 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',)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM