我使用Django序列化程序将模型数据序列化为JSON
例如: - 我有一个模型(CHECKTYPE),其中包含一个字段'类型'。
现在'类型'包含逗号(,)分隔的项目,如&test; test1,test1'。
我正在使用如下的Django序列化程序(在view.py中的某处):
gettypes = CHECKTYPE.objects.all()
mytypes = serializers.serialize("json", gettypes)
return HttpResponse(mytypes, content_type="application/json")
这会在网页上返回一个JSON,如下所示:
[{"model": "porttype.CHECKTYPE", "pk": "xyz00000005", "fields": {"types": "test, test1, test2"}}]
现在我想在序列化数据之前操纵字段属性 例如:我想在字段中添加一个属性' lasttype'如果我拆分'类型'那将是列表的最后一个索引。用逗号。
lasttype = types.split(',')[-1]
所以最终的json响应应如下所示:
[{"model": "porttype.CHECKTYPE", "pk": "xyz00000005", "fields": {"types": "test, test1, test2", "lasttype":"test2"}}]
我尝试按照以下方式执行此操作,但它无效:
gettypes = CHECKTYPE.objects.all()
updated_types = []
for mtype in gettypes:
mtype.lasttype = mtype.types.split(',')[-1]
updated_types.append(mtype)
mytypes = serializers.serialize("json", updated_types)
return HttpResponse(mytypes, content_type="application/json")
但这不起作用。它给了我相同的JSON响应,而没有显示' lasttype'属性。 如果有可能实现这一点,请告诉我。
谢谢,
沙善
答案 0 :(得分:0)
修改您发送的响应的最佳方法是将json加载到dict然后修改dict,然后再次json转储响应的数据。
答案 1 :(得分:0)
不是在序列化之前修改字段,而是应该在序列化后修改字段。
tr -d '[]_'
使用import json
mytypes = json.loads(serializers.serialize("json", gettypes))
updated_types = []
for mytype in mytypes:
last_type = mytype['fields']['types'].split(',')[-1]
mytype['fields']['lasttype'] = last_type
updated_types.append(mytype)
return JsonResponse(updated_types)
,您可以直接json数据,而无需重新序列化JsonResponse
或dict
。
预期数据应如下所示:
list