帮助请从“昵称”和“家庭”字段中进行选择。 在数据库中有以下table。我按如下方式对“昵称”字段进行抽样: views.py:
from django.db.models import Q
@login_required
def friends_search(request):
search_result = None
if request.method == 'POST':
if request.POST.get('fld_name'):
try:
fld_name = request.POST.get('fld_name')
search_result = UserProfile.objects.filter(Q(nickname__icontains=fld_name))
if not search_result:
search_result = 'По вашему запросу ничего не найдено.'
except Exception as exc:
search_result = 'В данный момент доступ к базе данных невозможен. Попробуйте повторить ваш запрос позже.'
t = loader.get_template('friends_search.html')
c = RequestContext(request, {
'search_result': search_result,
}, [custom_proc])
return HttpResponse(t.render(c))
问题是我需要在“昵称”,“家庭”字段中同时采样。以下方法不起作用:
search_result = UserProfile.objects.filter(Q(nickname__icontains=fld_name), Q(family__icontains=fld_name))
答案 0 :(得分:1)
修改Complex lookups with Q objects, 您应该使用OR运算符|
它看起来像这样:
from django.db.models import Q
@login_required
def friends_search(request):
search_result = None
if request.method == 'POST':
if request.POST.get('fld_name'):
try:
fld_name = request.POST.get('fld_name')
q = Q(nickname__icontains=fld_name) | Q(family__icontains=fld_name)
search_result = UserProfile.objects.filter(q)
if not search_result:
search_result = 'По вашему запросу ничего не найдено.'
except Exception as exc:
search_result = 'В данный момент доступ к базе данных невозможен. Попробуйте повторить ваш запрос позже.'
t = loader.get_template('friends_search.html')
c = RequestContext(request, {
'search_result': search_result,
}, [custom_proc])
return HttpResponse(t.render(c))
答案 1 :(得分:1)
如果你想进行AND查询,只需附加过滤器,如下所示:
UserProfile.objects.filter(Q(nickname__icontains=fld_name)).filter(Q(family__icontains=fld_name))