Python 处理多个返回的对象
我有一个联系人/地址应用程序,允许用户在数据库中搜索联系人条目。当前视图将返回一个对象(Entry())并显示其字段。代码如下:Python 处理多个返回的对象,python,django,django-views,Python,Django,Django Views,我有一个联系人/地址应用程序,允许用户在数据库中搜索联系人条目。当前视图将返回一个对象(Entry())并显示其字段。代码如下: def search_page(request): form = SearchForm() entrylinks = [] show_results = True if request.GET.has_key('query'): show_results = True query = requ
def search_page(request):
form = SearchForm()
entrylinks = []
show_results = True
if request.GET.has_key('query'):
show_results = True
query = request.GET['query'].strip()
if query:
form = SearchForm({'query' : query})
entrylinks = \
Entry.objects.filter (name__icontains=query)[:10]
variables = RequestContext(request, { 'form': form,
'entrylinks': entrylinks,
'show_results': show_results
})
return render_to_response('search.html', variables)
我想在视图中添加一个“if”语句,以识别何时返回了多个对象(数据库中同名的人),在这种情况下,将返回的对象转移到另一个模板(该模板只列出返回的对象,以便用户可以选择他/她更喜欢的对象)。有人能证明这样的声明是什么样子吗?谢谢。通过
Entry.objects.filter
(aQuerySet
)返回的对象具有长度,这意味着您可以调用len(entrylinks)
来获取返回的记录数。因此,您可以这样做:
if len(entrylinks) == 1:
tpl = "search.html"
else:
tpl = "select.html"
variables = RequestContext(request, {
"form": form,
"entrylinks": entrylinks,
"show_results": show_results,
})
return render_to_response(tpl, variables)
Entry.objects.filter
(aQuerySet
)返回的对象具有长度,这意味着您可以调用len(entrylinks)
来获取返回的记录数。因此,您可以这样做:
if len(entrylinks) == 1:
tpl = "search.html"
else:
tpl = "select.html"
variables = RequestContext(request, {
"form": form,
"entrylinks": entrylinks,
"show_results": show_results,
})
return render_to_response(tpl, variables)
您应该使用entrylinks.count(),而不是使用len(entrylinks)。内置的count方法速度更快,可以为您节省数据库查询。与使用len(entrylinks)相比,您应该使用entrylinks.count()。内置的计数方法速度更快,可以为您节省一个数据库查询。awesome。比米帕迪好多了。谢谢,太棒了。比米帕迪好多了。感谢。难道
entrylinks.count()
不会导致另一个数据库查询吗count()
在幕后执行选择count(*)…
操作。同意mipadi。在这种情况下,len
实际上效率更高,因为您无论如何都需要在模板中计算queryset。entrylinks.count()不会导致另一个DB查询吗count()
在幕后执行选择count(*)…
操作。同意mipadi。在这种情况下,len
实际上效率更高,因为您无论如何都需要在模板中计算queryset。