我正在尝试编写我的自定义API视图,并且在查询集和JSON方面有些挣扎。它不应该那么复杂,但是我仍然被困住了。另外,我对我编写的循环的某些奇怪行为感到困惑。
这是我的观点:
@api_view()
def BuildingGroupHeatYear(request, pk, year):
passed_year = str(year)
building_group_object = get_object_or_404(BuildingGroup, id=pk)
buildings = building_group_object.buildings.all()
for item in buildings:
demand_heat_item = item.demandheat_set.filter(year=passed_year).values('building_id', 'year', 'demand')
print(demand_heat_item)
print(type(demand_heat_item)
return Response(demand_heat_item))
好吧,这实际上使我完全得到了我想要的东西。即:
{'building_id': 1, 'year': 2019, 'demand': 230.3}{'building_id': 1, 'year': 2019, 'demand': 234.0}
好的,很好,但是为什么呢?每次循环经过时都不应覆盖数据吗?
同样,当我获得了demand_heat_item的类型时,我又返回了一个查询集<class 'django.db.models.query.QuerySet'>
但这是一个API视图,因此我想找回JSON。那不是应该给我一个错误吗?
我该怎么做,以便获得与JSON相同的数据结构?
它试图像这样重写它,但是没有成功,因为我无法序列化它:
@api_view()
def BuildingGroupHeatYear(request, pk, year):
passed_year = str(year)
building_group_object = get_object_or_404(BuildingGroup, id=pk)
buildings = building_group_object.buildings.all()
demand_list = []
for item in buildings:
demand_heat_item = item.demandheat_set.filter(year=passed_year).values('building_id', 'year', 'demand')
demand_list.append(demand_heat_item)
json_data = json.dumps(demand_list)
return Response(json_data)
我还尝试了JSON Response和Json解码器。
但是也许有更好的方法可以做到这一点?
或者也许我的问题表达得更清晰,像这样:如何从循环中获取数据,并将其作为JSON返回
非常感谢您的帮助。在此先感谢!
此外,我尝试了以下操作:
for item in buildings:
demand_heat_item = item.demandheat_set.filter(year=passed_year).values('building_id', 'year', 'demand')
json_data = json.dumps(list(demand_heat_item))
return Response(json_data)
这给了我我不想要的奇怪答案:
"[{\"building_id\": 1, \"year\": 2019, \"demand\": 230.3}, {\"building_id\": 1, \"year\": 2019, \"demand\": 234.0}]"