Динамическое создание объектов из набора запросов
У меня есть проект под управлением Django и folium. У меня есть неизвестный список категорий, и мне нужно добавить маркеры на карту в соответствии с их категорией.
current_map = folium.Map(location=(0, 0), zoom_start=6)
# a layer marker will be placed in
layer_1 = folium.FeatureGroup(name="Category name 1").add_to(current_map)
c = Category.object.all()
markers = Marker.objects.all()
for marker in markers:
folium.Marker(
location=(marker.latitude, marker.longitude),
popup=folium.Popup(html=popup_html(marker), max_width=280, max_height=320),
icon=folium.Icon(
color=marker.category.color,
icon=marker.category.icon.name,
prefix="fa",
),
tooltip=marker.category.name,
).add_to(layer_1)
Этот код подходит для одной или двух категорий, но если у меня 100 категорий, то мне нужно сделать что-то вроде этого:
layer_1 = folium.FeatureGroup(name="Category name 1").add_to(current_map)
layer_2 = folium.FeatureGroup(name="Category name 2").add_to(current_map)
...
layer_99 = folium.FeatureGroup(name="Category name 99").add_to(current_map)
for marker in markers:
folium.Marker(
# code omitted
tooltip=marker.category.name,
).add_to(
# if layer_n.layer_name == marker.category.name than add this marker to layer_n
)
Я пробовал этот способ, но он не сработал так, как мне нужно:
def layer(name, to):
return folium.FeatureGroup(name=name).add_to(to)
for marker in markers:
folium.Marker(
# code omitted
tooltip=marker.category.name,
).add_to(layer(marker.category.name, current_map))
Как сделать это правильно?