如何将多对多字段序列化为列表,然后通过rest框架返回它们?在下面的示例中,我尝试返回该帖子以及与其关联的标签列表。
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关系:
TagSerializer
class Meta
model = Tag
PostSerializer
many=True
ManyToManyField
class PostSerializer(serializers.ModelSerializer): tag = TagSerializer(read_only=True, many=True) class Meta: model = Post fields = ('tag', 'text',)
答案是针对DRF 3