diff --git a/program/filters.py b/program/filters.py
index 4ccece62f7fcab5d74b5f4cd97911bd6475f3833..66ec6ec7bdc7615b4a52cc4ae718c1744e735acd 100644
--- a/program/filters.py
+++ b/program/filters.py
@@ -55,6 +55,9 @@ class ShowFilterSet(StaticFilterHelpTextMixin, filters.FilterSet):
         field_name="music_focus",
         help_text="Return only shows with given music focus(es).",
     )
+    music_focus__slug = filters.CharFilter(
+        field_name="music_focus", help_text="Return only shows with the give music focus slug."
+    )
     owner = IntegerInFilter(
         field_name="owners",
         help_text="Return only shows that belong to the given owner(s).",
@@ -62,15 +65,24 @@ class ShowFilterSet(StaticFilterHelpTextMixin, filters.FilterSet):
     category = IntegerInFilter(
         help_text="Return only shows of the given category or categories.",
     )
+    category__slug = filters.CharFilter(
+        field_name="category", help_text="Return only shows of the given category slug."
+    )
     language = IntegerInFilter(
         help_text="Return only shows of the given language(s).",
     )
     topic = IntegerInFilter(
         help_text="Return only shows of the given topic(s).",
     )
+    topic__slug = filters.CharFilter(
+        field_name="topic", help_text="Return only shows of the given topic slug."
+    )
     type = IntegerInFilter(
         help_text="Return only shows of a given type.",
     )
+    type__slug = filters.CharFilter(
+        field_name="type", help_text="Return only shows of the given type slug."
+    )
     public = filters.BooleanFilter(
         field_name="is_public",
         help_text="Return only shows that are public/non-public.",
@@ -154,9 +166,7 @@ class TimeSlotFilterSet(filters.FilterSet):
         ),
     )
 
-    def filter_surrounding(
-        self, queryset: QuerySet, name: str, value: datetime.datetime
-    ):
+    def filter_surrounding(self, queryset: QuerySet, name: str, value: datetime.datetime):
         nearest_timeslots_in_future = (
             models.TimeSlot.objects.filter(start__gte=value)
             .order_by("start")
@@ -167,9 +177,7 @@ class TimeSlotFilterSet(filters.FilterSet):
             .order_by("-start")
             .values_list("id", flat=True)[:5]
         )
-        relevant_timeslot_ids = list(nearest_timeslots_in_future) + list(
-            nearest_timeslots_in_past
-        )
+        relevant_timeslot_ids = list(nearest_timeslots_in_future) + list(nearest_timeslots_in_past)
         return queryset.filter(id__in=relevant_timeslot_ids)
 
     def filter_start(self, queryset: QuerySet, name: str, value: datetime.date):