I wrote this Django view method:
def list_all_devices(request):
all_devices_info = []
fields = Devices.objects.all()
for field in fields:
device = Devices.objects.filter(device_id=field.device_id).values()
dev = device[0]
dev['variables'] = Variables.objects.filter(device_id=field.device_id).values()
del dev['device_creation_datetime']
all_devices_info.append(dev)
return HttpResponse(json.dumps(all_devices_info), content_type="application/json")
For some reason the first code doesn't work, but if I do a minor modification like the following, it starts working, I can't figure out why.
def list_all_devices(request):
all_devices_info = []
fields = Devices.objects.all()
for field in fields:
device = Devices.objects.filter(device_id=field.device_id).values()
dev = device[0]
dev['variables'] = [v for v in Variables.objects.filter(device_id=field.device_id).values()]
del dev['device_creation_datetime']
all_devices_info.append(dev)
return HttpResponse(json.dumps(all_devices_info), content_type="application/json")
When I analyze the modifications:
[v for v in Variables.objects.filter(device_id=field.device_id).values()]
and
Variables.objects.filter(device_id=field.device_id).values()
they seem similar, and both seem to be lists and have the same information inside. But when the json.dumps
method is called over it, in the first code it throws the following error on the browser.