Как объединить два набора запросов по общему полю
У меня есть два приведенных ниже кверисета. У них есть common road_type_id
edges = Edge.objects.values("road_type_id", "edge_id",
"name", "length", "speed",
"lanes").filter(network=roadnetwork)
roadtypes = RoadType.objects.values("road_type_id",
"default_speed",
"default_lanes"
).filter(network=roadnetwork)
Я хотел бы заменить в edges
:
- все
lanes
сNone as value
поroadtypes.default_lanes
- все
speed
сNone as value
поroadtypes.default_speed
Как я могу это сделать?
Вы можете сделать это следующим образом, сначала собрать все края, собрать тип дороги и заменить значение.
edges = Edge.objects.filter(network=roadnetwork)
for edge in edges:
road_type = RoadType.objects.get(road_type_id=edge.road_type_id)
if edge.lanes is None:
edge.lanes = road_type.default_lanes
if edge.speed is None:
edge.speed = road_type.default_speeds
edge.save()