0 votes

Comment paginer les résultats d'une recherche dynamique dans Django ?

Je suis en train de mettre au point une méthode de recherche simple pour certains modèles. La requête recherche à la fois le nom de l'auteur et le texte du dessin ou modèle. Le problème : que se passe-t-il lorsque la base de données contient 300 000 dessins et modèles et que je veux paginer les résultats ? Si je passe un page puis, chaque fois qu'un utilisateur passe à une autre page, la requête est exécutée à nouveau.

Quelle est la meilleure façon de résoudre ce problème ? Est-ce qu'il faut mettre en cache autant de recherches que possible ? Stocke-t-elle une certaine quantité de données de session ?

"""
Searches by screenname or design text
"""
def search_designs(request):

    designs = None
    words   = None

    if request.method == 'POST':
        q     = request.POST['search']
        words = q.split()

        # Get all approved designs
        designs = Design.objects.filter(status=2)

        for w in words:
            designs = designs.filter(name__icontains=w) | designs.filter(author__profile__screenname__icontains=w)

    vars = RequestContext(request, 
    {
        'results' : designs,
        'words'   : words,
    })
    return render_to_response("search_test.html", vars)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X