Add basic support for sorting & filtering on the backend

This commit is contained in:
Michal Kunc 2023-01-17 23:24:36 +01:00
parent edd4e0ca41
commit 4851d50d7e

View File

@ -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()