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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在DRF中将外键序列化为列表相关的知识,希望对你有一定的参考价值。

我想序列化数据

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'的东西,它的例子太少了。

这会是什么样的?

答案

把你的序列化器写成,

#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

以上是关于在DRF中将外键序列化为列表的主要内容,如果未能解决你的问题,请参考以下文章

DRF:使用嵌套序列化程序的简单外键分配?

SQLite 片段函数实现不会在 TextView 中将文本格式化为 HTML

drf-外键字段设置及子序列化

在 Android Studio 中将嵌套的 JSON 反序列化为 Java

如何在 Jackson 中将对象序列化为 ObjectNode 的值?

如何在 ASP.NET 中将 JSON 反序列化为简单的 Dictionary<string,string>?