From 4851d50d7ee86599037a33e16ec448bcb738b9fd Mon Sep 17 00:00:00 2001 From: Michal Kunc Date: Tue, 17 Jan 2023 23:24:36 +0100 Subject: [PATCH] Add basic support for sorting & filtering on the backend --- watchlist/views.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/watchlist/views.py b/watchlist/views.py index c5e50d4..6f47368 100644 --- a/watchlist/views.py +++ b/watchlist/views.py @@ -29,7 +29,17 @@ class IndexView(generic.ListView): model = models.Movie def get_queryset(self): - return models.Movie.objects.filter(watched=False).order_by('id').all() + qs = models.Movie.objects + # Filter + if self.request.GET.get("watched", False) != "true": + qs = qs.filter(watched=False) + # Sort + order = self.request.GET.get("sort", "id") + if order in ('id', '-id', 'name', '-name'): + qs = qs.order_by(order).all() + elif order == "score" or order == "-score": + qs = sorted(qs.all(), key=lambda x: x.score, reverse=True if order == "score" else False) + return qs def get_context_data(self): context = super().get_context_data()