我正在开发一个处理嵌套数据结构的 API。当尝试使用棉花糖时,我无法想出一个解决方案来创建嵌套模型实例并引用它们的父实例。Marshmallow 的 post_load 以该顺序从子到父运行,而不是从父到子。有没有办法扭转这种情况?我想从序列化父级开始并将其作为上下文传递给子级。
var_test = {
"id": 1,
"name": "dad a",
"children_a": [
{
"id": 2,
"name": "child 1 - 2",
"grand_children_a": [
{
"id": 2,
"name": "child 1 - 2",
}
]
},
{
"id": 3,
"name": "child 2 - 2",
}
]
}
class ParentA(Schema):
id = fields.Integer()
name = fields.String()
children_a = fields.Nested('ChildrenA', many=True)
@post_load()
def pl_handler(self, data):
# create Parent A
return data
class ChildrenA(Schema):
id = fields.Integer()
name = fields.String()
grand_children_a = fields.Nested('GrandchildrenA', many=True)
@post_load()
def pl_handler(self, data):
# create child of Parent A
return data
class GrandchildrenA(Schema):
id = fields.Integer()
name = fields.String()
@post_load()
def pl_handler(self, data):
# create child of ChildrenA
return "grand child string"
var_s = ParentA()
var_s.load(var_test)