diff --git a/bookwyrm/templates/book/format_filter.html b/bookwyrm/templates/book/format_filter.html
index 7bd8f6c7..05275528 100644
--- a/bookwyrm/templates/book/format_filter.html
+++ b/bookwyrm/templates/book/format_filter.html
@@ -5,8 +5,11 @@
diff --git a/bookwyrm/templates/book/language_filter.html b/bookwyrm/templates/book/language_filter.html
index fc21d5e2..c6798a9b 100644
--- a/bookwyrm/templates/book/language_filter.html
+++ b/bookwyrm/templates/book/language_filter.html
@@ -5,8 +5,11 @@
diff --git a/bookwyrm/views/books.py b/bookwyrm/views/books.py
index 6d10e131..8434cec0 100644
--- a/bookwyrm/views/books.py
+++ b/bookwyrm/views/books.py
@@ -252,11 +252,18 @@ class Editions(View):
if is_api_request(request):
return ActivitypubResponse(work.to_edition_list(**request.GET))
+ filters = {}
+
+ if request.GET.get("language"):
+ filters["languages__contains"] = [request.GET.get("language")]
+ if request.GET.get("format"):
+ filters["physical_format__iexact"] = request.GET.get("format")
+
editions = work.editions.order_by("-edition_rank").all()
languages = set(sum([e.languages for e in editions], []))
data = {
- "editions": editions,
+ "editions": editions.filter(**filters).all(),
"work": work,
"languages": languages,
"formats": set(e.physical_format.lower() for e in editions),