在Python Django rest框架中使用递归在嵌套的json列表中插入新字段和值
请告诉我如何根据条件更新/插入嵌套json列表中的字段和值 首先,我的嵌套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
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的子项。代码没有经过测试,但背后的想法应该是可行的