Моя функция поиска в настоящее время выглядит следующим образом:
query = request.GET.get('q')
if query:
item_list = item_list.filter(title__icontains=query) | item_list.filter(
bike__brand__name__icontains=query) | item_list.filter(
accessory__brand_accessory__name__icontains=query) | item_list.filter(
bikepart__brand_part__name__icontains=query)
Я могу фильтровать свои элементы, используя отдельные поля, но я ищу фильтр, который может искать элементы, используя несколько полей. Мои товары разделены на 4 разные модели. Item
модель является основной моделью, которая содержит все названия для других моделей, которые связаны с этой основной моделью: Bike
, Accessory
и BikePart
.
Я ищу фильтрация с использованием (title__icontains=query + bike__brand__name__icontains=query)
, (title__icontains=query + accessory__brand_accessory__name__icontains=query)
, (title__icontains=query + bikepart__brand_part__name__icontains=query)
, но я все еще хочу иметь возможность искать элементы, используя только название или только бренд. Каков наилучший способ достичь этого?