How do I serialize a many-to-many field into list of something, and return them through rest framework? In my example below, I try to return the post together with a list of tags associated with it.
models.py
JavaScript
x
4
1
class post(models.Model):
2
tag = models.ManyToManyField(Tag)
3
text = models.CharField(max_length=100)
4
serializers.py
JavaScript
1
5
1
class PostSerializer(serializers.ModelSerializer):
2
class Meta:
3
model = Post
4
fields = ("text", "tag"??)
5
views.py
JavaScript
1
4
1
class PostViewSet(viewsets.ReadOnlyModelViewSet):
2
queryset = Post.objects.all()
3
serializer_class = PostSerializer
4
Advertisement
Answer
You will need a TagSerializer
, whose class Meta
has model = Tag
. After TagSerializer
is created, modify the PostSerializer
with many=True
for a ManyToManyField
relation:
JavaScript
1
7
1
class PostSerializer(serializers.ModelSerializer):
2
tag = TagSerializer(read_only=True, many=True)
3
4
class Meta:
5
model = Post
6
fields = ('tag', 'text',)
7