как объединить фильтр icontains, чтобы он выполнял поиск из одного поля и другого одновременно

#python #django #filtering

#python #django #фильтрация

Вопрос:

 def search(request):
    queryset_list = Listing.objects.order_by('-list_date').filter(is_published=True)

    if 'keywords' in request.GET:
        keywords = request.GET['keywords']
        if keywords:
            queryset_list = queryset_list.filter(description__icontains=keywords)
        if keywords:
            queryset_list = queryset_list.filter(realtor__name__icontains=keywords)
  

Я хотел бы иметь возможность выполнять поиск в двух вещах одновременно. например, если описание содержит «big» и realtor__name не содержит, я хотел бы по-прежнему видеть объект с big и same для realtor__name , даже если в описании его нет, я хотел бы его получить.
Спасибо

Ответ №1:

Похоже, вам нужен or оператор

Пример:

 from django.db.models import Q


if keywords:
    queryset_list = queryset_list.filter(Q(description__icontains=keywords) |
                                         Q(realtor__name__icontains=keywords))
  

Комментарии:

1. Пожалуйста, примите ans (символ галочки), если это решило вашу проблему. Спасибо