Jeff Vipul
Jeff Vipul

Reputation: 45

unable to apply search on multiple fields Django

def search(request):
  if request.method == 'POST':
    srch = request.POST['title']
    if srch:
      match = Post.objects.filter(title__icontains=srch,email__icontains=srch)
      # match = Post.objects.annotate(search=SearchVector('title', 'email'),).filter(search=srch)
      if match:
        return render(request,'post/index.html',{'sr':match})
      else:
        messages.add_message(request,messages.INFO,' No result found ')
    else:
      return redirect('post')
  return render(request,"post/index.html")

Upvotes: 0

Views: 57

Answers (1)

Arjun Shahi
Arjun Shahi

Reputation: 7330

For OR condition

match = Post.objects.filter(Q(title__icontains=srch) | Q(email__icontains=srch))

For AND condion

match = Post.objects.filter(Q(title__icontains=srch) & Q(email__icontains=srch))

I think it's better use GET request instead of POST request for searching.

Upvotes: 2

Related Questions