Динамическое создание объектов из набора запросов

У меня есть проект под управлением 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))

Как сделать это правильно?

Вернуться на верх