from django.core.paginator import Paginator, EmptyPage from django.shortcuts import render from django.http import HttpResponse from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector from models import Recording, Session def index(request, page=1): obj = Session.objects.all() query = request.GET.get('q', None) if query: vector = SearchVector('title', 'sets__desc', 'sets__recordings__title', 'sets__recordings__artist', 'sets__recordings__location', 'sets__recordings__album', 'sets__recordings__date', 'sets__recordings__file') obj = obj.annotate(search=vector).filter(search=query) obj = obj.distinct() paginator = Paginator(obj, 10) try: sessions = paginator.page(page) except EmptyPage: sessions = paginator.page(paginator.num_pages) return render(request, 'music.htm', {'sessions': sessions})