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,我面临着同样的问题-“我得到了序列化的响应,但孩子们没有任何东西。”。在将数据保存到模型时,请分享视图文件中的错误。