一.概要
Django写后端返回响应时,通常需要返回的可能不是一个数据表的内容,还包括了这个数据表的外键所关联的其他表的一些字段,那该如何做才能把他们放在一起返回响应呢?
二.处理方法
在这里我有三个数据表
第一个是航空订单,
第二个是飞机数据
第三个是航空公司
航空订单的外键是飞机数据,飞机数据的外键又是航空公司。那我如果想把这三个的数据放在一起返回响应给怎么做呢?
flights = Flight.objects.filter(query)
results = []
for flight in flights:
flight_data = {
'id': flight.id,
'departureCity': flight.departureCity,
'destinationCity': flight.destinationCity,
'departureDate': flight.departureDate,
'plane_number': flight.plane.name,
'company_name': flight.plane.company.name
}
results.append(flight_data)
print(results)
return Response({
'data': results,
}, status=status.HTTP_200_OK)
先创建一个空列表,然后通过flight.plane.name,flight.plane.company.name这样的方式获取到后,通过循环的方式把这些数据放在一个字典里,字典构建完成后再添加到列表当中,最后将列表进行返回。
最后打印结果如下所示。
[{'id': 1, 'departureCity': '上海', 'destinationCity': '广州', 'departureDate': datetime.date(2024, 6, 20), 'plane_number': 'MU5317', 'company_name': '东方航空'},
{'id': 2, 'departureCity': '上海', 'destinationCity': '广州', 'departureDate': datetime.date(2024, 6, 20), 'plane_number': 'AQ1006', 'company_name': '九元航空'}]
三.总结
创建一个空列表,通过循环的方式把其他数据表的字段和原有数据表的字段放在一个字典里,字段构建完成后添加到列表中,最后把这个列表进行返回