0

I want to be able to input a list of strings like so:

["searchterm1", "searchterm2", "searchtermN"]

And output all rows from the database where "searchterm1" matches one of the columns OR "searchterm2" matches one of the columns and so on.

Is there a way to do so?

user2092743
  • 351
  • 1
  • 4
  • 11
  • you can use django [Q](https://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects) for or query – badiya Apr 21 '17 at 20:39

1 Answers1

5
from django.db.models import Q

def search(request):

    list_ = ["searchterm1", "searchterm2", "searchtermN"]

    q_object = Q(title__icontains=list[0]) | Q(description__icontains=list[0])

    for item in list_[1:]:
        q_object.add((Q(title__icontains=item) | Q(description__icontains=item)), q_object.connector)

    queryset = Product.objects.filter(q_object)

reference1 reference2

Anshul Tiwari
  • 361
  • 2
  • 12
Thameem
  • 3,426
  • 4
  • 26
  • 32