q
字符串。
Q
reduce
-列出
Q(name__icontains=...)
|
from django.db.models import Q
from functools import reduce
from operator import or_
def search_list(request):
template = 'search_result.html'
results = Product.objects.all()
error = None
query = request.GET.get('q')
if query:
query = query.split('\n')
else:
error = 'No query specified'
if query:
results = results.filter(
reduce(or_, (Q(name__icontains=itm.strip()) for itm in query))
)
elif not error:
error = 'Empty query'
some_context = {
'results' : results,
'error': error
}
return render(request, 'app/some_template.html', some_context)
存在且不是空字符串。如果是这样的话,错误是
'No query specified'
'Empty query'
发生在普通人身上
.split('\n')
query
reduce(..)
Product
S.
render(..)
some_template.html
error
和
result