【发布时间】:2020-02-17 02:59:30
【问题描述】:
我对 django 嵌套模型有一些疑问。
据我所知,要处理嵌套数据结构,我必须反序列化每个数据,然后创建将与 ForeignKeyField 连接的对象。
我可以通过覆盖.create() 方法来处理这个问题,通过.pop() 分隔每个嵌套数据并分别创建每个对象模型。这是我如何处理 2 级嵌套数据的示例
(基于文档:DRF Documentation)
def create(self, validated_data):
child_data = validated_data.pop('child_data')
parent_obj = ParentModel.objects.create(**validated_data)
for data in child_data:
ChildModel.objects.create(parent_id=parent_obj, **data)
return parent_obj
我在这里遇到了一些麻烦。我有多个多级数据结构,可能像下面的数据:
"data_a": [
{
"data_a_1": [
{
"data_a_1_1": [
{
"data_a_1_1_1": "example_a_1_1_1",
"data_a_1_1_2": "example_a_1_1_2"
}
]
},
{
"data_a_1_2_1": "Example a-1-2-1",
"data_a_1_2_2": "Example a-1-2-2"
}
]
"data_a_2": [
{
"data_a_2_1": "Example a-2-1"
},
{
"data_a_2_2": "Example a-2-2"
}
]
}
]
我的问题是:
- 处理这种动态数据结构的最佳方法是什么?如上所述,通过覆盖
.create()来处理多个多级数据结构将需要很长的硬编码脚本。 - 还有其他处理上述数据结构的最佳实践吗?
【问题讨论】:
-
递归是你的朋友。
-
我只是做了一些关于递归的研究,我认为你的建议是我需要学习的,我会尽快回来检查。
-
@RedCricket 任何示例如何使用 django-rest-framework-recursive?我仍然不明白如何正确使用它。谢谢b4
标签: python django postgresql data-structures