2010-01-13 4 views
0

Suite à la réponse à this question (Merci encore Ellie P!) J'ai créé une page de recherche et une page de résultats.Comment affiner une requête initiale dans Django?

Par exemple si vous search pour l'avocat "delelle" la page des résultats montre son entreprise, l'école et l'année graduée. Mais au lieu d'afficher ses informations, je veux afficher d'autres avocats diplômés de la même école la même année.

est la vue:

def search(request): 
    if 'q' in request.GET and request.GET['q']: 
     q = request.GET['q'] 
     lawyers = Lawyer.objects.filter(last__icontains=q) 
     return render_to_response('search_results.html', {'lawyers': lawyers, 'query': q}) 
    else: 
     return HttpResponse('Please submit a search term.') 

Quelqu'un peut-il me aider à comprendre comment je peux sauver la school et year_graduated de la requête initiale et faire une recherche school et year_graduated et afficher ce résultat?

Merci!

Modifier

modèle est here

Edit2

J'ai essayé quelques petites choses de la QuerySet API

Compte tenu de la requête de recherche est "akira":

>>> akira_year = Lawyer.objects.filter(first__icontains="Akira").values_list('year_graduated').order_by('year_graduated') 

>>> print akira_year 
[(u'2000',)] 

Mais

>>> Lawyer.objects.filter(year_graduated__icontains=akira_year[0]) 
[] 

ne fonctionne pas.

Quelqu'un peut-il aider avec la syntaxe correcte à utiliser dans ce cas?

Merci

+1

Vous devez expliquer un peu plus, ce que vous essayez d'atteindre, car il est en ce moment difficile à comprendre. – gruszczy

+0

D'abord ne passez pas la recherche au modèle directement utiliser quelque chose comme django-sphinx, Vous devez poster votre modèle pour d'autres pour répondre à votre question. – Prashanth

+0

J'ai ajouté le lien au modèle. – Zeynel

Répondre

0

Cette fonction vue répond à la question:

def search(request): 
    if 'q' in request.GET and request.GET['q']: 
     q = request.GET['q'] 
     q_school = Lawyer.objects.filter(last__icontains=q).values_list('school', flat=True) 
     q_year = Lawyer.objects.filter(last__icontains=q).values_list('year_graduated', flat=True) 
     lawyers = Lawyer.objects.filter(school__icontains=q_school[0]).filter(year_graduated__icontains=q_year[0])   
     return render_to_response('search_results.html', {'lawyers': lawyers, 'query': q}) 
    else: 
     return HttpResponse('Please submit a search term.') 
Questions connexes