views.py 706 B

123456789101112131415161718192021222324252627
  1. from django.db.models import Count
  2. from django.views import generic
  3. from webpages.models import WebPage
  4. class WebPageListView(generic.ListView):
  5. model = WebPage
  6. paginate_by = 20
  7. def get_queryset(self):
  8. return (
  9. super()
  10. .get_queryset()
  11. .annotate(scrobble_count=Count("scrobble"))
  12. .order_by("-scrobble_count")
  13. )
  14. class WebPageDetailView(generic.DetailView):
  15. model = WebPage
  16. slug_field = "uuid"
  17. def get_context_data(self, **kwargs):
  18. user = self.request.user
  19. context_data = super().get_context_data(**kwargs)
  20. context_data["scrobbles"] = self.object.scrobbles(user)
  21. return context_data