在DRF中将外键序列化为列表

问题描述 投票:0回答:1

我想序列化数据

class Main(models.Model):
    title = models.CharField()

class ForeignKey(models.Model):
    main = models.ForeignKey(Main,on_related='foreign_key')

我想得到像这样的结果

{'title':'hello', 'foreign_key':'['foreign_key1','foreign_key2','foreign_key3']'

我首先想到我可以在'views.py'中使它工作,但有些文档告诉我在序列化程序中有一个类似'listField'的东西,它的例子太少了。

这会是什么样的?

python django django-rest-framework
1个回答
1
投票

把你的序列化器写成,

#serializers.py
from rest_framework import serializers


class ForeignKeySerializer(serializers.ModelSerializer):
    class Meta:
        model = ForeignKey
        fields = '__all__'


class MainSerializer(serializers.ModelSerializer):
    foreign_key = ForeignKeySerializer(source='foreignkey_set', many=True)

    class Meta:
        model = Main
        fields = ("title", "foreign_key")

然后把你的意见写成,

#views.py
from rest_framework.decorators import api_view
from rest_framework.response import Response


@api_view()
def sample_view(request):
    queryset = Main.objects.all()
    serializer = MainSerializer(queryset, many=True)
    return Response(data=serializer.data)

参考

  1. DRF-Serializer
  2. DRF-views
© www.soinside.com 2019 - 2024. All rights reserved.