在Python Django rest框架中使用递归在嵌套的json列表中插入新字段和值

在Python Django rest框架中使用递归在嵌套的json列表中插入新字段和值,python,django,django-rest-framework,Python,Django,Django Rest Framework,请告诉我如何根据条件更新/插入嵌套json列表中的字段和值 首先,我的嵌套json列表如下 objlist= [{ "label": "1", "children": [{ "label": "2", "children": [{ "label": "3" }]}]}{"label": "4","children": [{ "label": "5"},{ "label": "6"}]}{"label":"7"},{"label":"8"}] 在实现递归和逻辑之后,我的输出如下\ objlist

请告诉我如何根据条件更新/插入嵌套json列表中的字段和值

首先,我的嵌套json列表如下

objlist= [{ "label": "1", "children": [{ "label": "2", "children": [{ "label": "3" }]}]}{"label": "4","children": [{ "label": "5"},{ "label": "6"}]}{"label":"7"},{"label":"8"}]
在实现递归和逻辑之后,我的输出如下\

objlist= [{ "label": "1", "children": [{ "label": "2", "children": [{ "label": "3" }]}], "checked":"true"}{"label": "4","children": [{ "label": "5", "checked":"true"},{ "label": "6"}]}{"label":"7"},{"label":"8", "checked":"true"}]
要实现这一点,代码将写在下面

def get(self, request, format=None):
    queryset = models.Master_Industry.objects.filter(parent__isnull=True)
    serializer1 = masterserializer.IndustrySerializer(queryset, many=True)
    json_string = json.dumps(serializer1.data)

    stringobj = 2,5
    my_dict = json.loads(json_string)

    for item in my_dict:
        if item["value"] in stringobj:
            item["checked"] = True
            continue

        for itemchild in item["children"]:
            if itemchild["value"] in stringobj:
                itemchild["checked"] = True
                continue

            for itemchildinner in itemchild["children"]:
                if itemchildinner["value"] in stringobj:
                    itemchildinner["checked"] = True
                    continue


    print(my_dict)
    return Response(serializer1.data)
那么请告诉我如何解决这个问题?
谢谢

我不知道你们的模型结构是怎样的。但这里有一个关于如何做到这一点的想法:

class LabelTree(serializers.ModelSerializer):
     children = serializers.SerializerMethodField()

    class Meta:
        fields = ('label', 'children')
        model = Label

    def get_children(self, obj):
        children = Label.objects.filter(parent=obj)
        return LabelTree(children, many=True)
通过按父字段筛选并序列化obj的子项,可以找到obj的子项。代码没有经过测试,但背后的想法应该是可行的