отфильтровать столбец с несколькими ключевыми словами в django - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь отфильтровать столбец в БД с несколькими ключевыми словами, но у меня возникла проблема. Когда я пытаюсь применить __contains= к массиву, это не работает.

def get_tasks_by_filters(request):
    datas = json.loads(request.body)

    tasks = Task.objects.filter(task_name__contains=datas["keywords"])
    serializer = TasksPricesSerializers(tasks, many=True)

    return JsonResponse(serializer.data, safe=False)

И __contains=, конечно, работая с одним значением Task.objects.filter(task_name__contains=datas["keywords"][0]) Но как можно применить __contains= к нескольким ключевым словам / массиву. Как можно этого добиться?

1 Ответ

1 голос
/ 26 мая 2020

Вы можете попробовать вот так, используя Q():

from django.db.models import Q

query = Q()

for k in datas["keywords"]:
    query |= Q(task_name__contains=k)

tasks = Task.objects.filter(query)
...