如何在Django中优化初始查询?

时间:2010-01-13 16:56:13

标签: python django

在回复this question之后(再次感谢Ellie P!),我创建了一个搜索页面和一个结果页面。

例如,如果您search为律师“delelle”,结果页面显示她的公司,学校和年度毕业。但是,我希望展示同年从同一所学校毕业的其他律师,而不是显示她的信息。

这是观点:

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.')

任何人都可以帮助我了解如何保存初始查询中的schoolyear_graduated并执行schoolyear_graduated搜索并显示该结果吗?

谢谢!

修改

模型是here

Edit2

我尝试了QuerySet API

中的一些内容

鉴于搜索查询是“akira”:

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

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

但是

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

不起作用。

在这种情况下,任何人都可以帮助使用正确的语法吗?

由于

1 个答案:

答案 0 :(得分:0)

此视图功能回答了问题:

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.')