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)