我正在尝试从字典中获取值,并将它们加载到 JSON 中。我想我几乎可以用波纹管代码得到它,但它只输出第一组值,我如何遍历它以便它会输出所有组?
def storeliqour_view(request, store_id):
objectdicts = {}
objects = StoreLiquor.objects.filter(storeID=store_id)
for i in range(len(objects)):
objectdicts = model_to_dict(objects[i])
objectdicts["storename"] = objects[i].storeID.StoreName
data = [objectdicts.values()]
#define response
response = {
'aaData': data,
'iTotalRecords': iTotalRecords,
'iTotalDisplayRecords': iTotalDisplayRecords,
'sEcho': request.GET['sEcho']
}
#serialize to json
s = BytesIO()
json.dump(response, s, cls=MainEncoder)
s.seek(0)
return HttpResponse(s.read())
现在它输出这个。如您所见,它只有一组: {"aaData": [[1, 0.0, 18, 96.6, 7032, false, 2610, "test store"]]}
如何让它输出多个,像这样?: {"aaData": [[1, 0.0, 18, 96.6, 7032, false, 2610, "测试商店"], [2, 0.0, 18, 96.6, 7032, true, 2610, "测试商店"] ]}
请您参考如下方法:
你可以使用:
data = [
model_to_dict(object).values() + [object.storeID.StoreName]
for object in objects
]
如果只有字典以相同的顺序返回值,这才会起作用。因此,执行以下操作更安全:
data = []
if objects:
keys = model_to_dict(objects[0]).keys()
for object in objects:
d = model_to_dict(object)
data.append([d[key] for key in keys] + [object.storeID.StoreName])
