Python Django Rest框架嵌套序列化程序

Python Django Rest框架嵌套序列化程序,python,django,d3.js,django-rest-framework,Python,Django,D3.js,Django Rest Framework,我有这样的模特- class Sectors(models.Model): sector_mc = models.TextField() class Insector(models.Model): foundation = models.ForeignKey(Sectors) name = models.TextField() value = models.FloatField(default=0) 我希望我的数据采用如下格式-

我有这样的模特-

class Sectors(models.Model):
  sector_mc = models.TextField()

class Insector(models.Model):
  foundation = models.ForeignKey(Sectors)
  name = models.TextField()
  value = models.FloatField(default=0)
我希望我的数据采用如下格式-

                        "name": "cluster",
                        "children": [
                            {"name": "Tester", "value": 3938},
                            {"name": "CommunityStructure", "value": 3812},
                        ]
                    },
                    {
                        "name": "graph",
                        "children": [
                            {"name": "BetweennessCentrality", "value": 34},
                            {"name": "LinkDistance", "value": 5731},
                        ]
                    }
所以“集群”属于“部门”中的“部门” 集群有子“Tester”和“CommunityStructure”(它们分别位于集群扇区的“Insector”的“name”和“value”中)

类似地,“图”位于扇区的“扇区”\u mc中,并且图的子项“介于中心性”和“链接距离”之间(这些子项位于图扇区的“昆虫”的“名称”和“值”中)

等等

如何在数据库中以相同的关系保存这些文件,以及如何使用DRF以这种格式构造文件。我试着使用DRF的嵌套关系,但没有达到任何目的


我需要的数据,以这种格式的d3日暴图。如果还有其他的解决办法,我也很乐意了解它们。谢谢

您可以创建一个
扇区序列化程序
,它将包含一个嵌套的序列化程序
昆虫序列化程序

由于您对输出使用不同的键,因此我们可以使用
source
从字段名中获取相应的值

输出中的
name
键对应于
sector\u mc
,因此我们使用
sector\u mc
作为其

子项
输出中的键包含特定
扇区
实例的所有相关实例。我们可以用作
子字段的源。此外,由于将有多个相关实例,因此我们将传递参数
many=True

class InsectorSerializer(serializers.ModelSerializer):

    class Meta:
        model = Insector
        fields = ('name', 'value')


class SectorSerializer(serializers.ModelSerializer):
    name = serializers.CharField(source='sector_mc') # get value from 'sector_mc' 
    children = InsectorSerializer(many=True, source='insector_set') # get all related instances

    class Meta:
        model = Sectors
        fields = ('name', 'children')

将数据保存到模型时,我的视图文件中出现问题。当视图问题得到解决时,DRF工作得很好。

所以我得到了序列化的响应,但孩子们什么都没有。也许你可以看看我的视野@拉胡拉:你有什么错误吗?另外,在pythonshell中检查您是否可以访问
.insector\u set.all()
的特定
Sectors
实例,即所有相关的
insector
实例。请尝试不使用
many=True
参数。如果不使用many=True,我会得到“children”:{“name”:null}@ThatBird您是否在python shell中检查属性以访问所有相关的
Insector
实例?它给了我一个Insector未定义的提示:@ThatBird,我面临着同样的问题-“我得到了序列化的响应,但孩子们没有任何东西。”。在将数据保存到模型时,请分享视图文件中的错误。