1. ホーム
  2. python

[解決済み] Django rest フレームワークで多対多のフィールドをシリアライズする

2022-09-10 19:29:36

質問

多対多のフィールドを何かのリストにシリアライズし、レストフレームワークを通してそれらを返すにはどうすればよいですか?以下の例では、投稿とそれに関連するタグのリストを一緒に返そうとしています。

models.py

class post(models.Model):
    tag = models.ManyToManyField(Tag)
    text = models.CharField(max_length=100)

serializers.py

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = ("text", "tag"??)

views.py

class PostViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

どのように解決するのですか?

が必要になります。 TagSerializer その class Meta 持つ model = Tag . 後 TagSerializer が作成されたら PostSerializer をもって many=True に対して ManyToManyField の関係にある。

class PostSerializer(serializers.ModelSerializer):
    tag = TagSerializer(read_only=True, many=True)

    class Meta:
        model = Post
        fields = ('tag', 'text',)

回答はDRF3用です。