Вы можете объединить Q
объекты, используя |
, который действует как "или":
first_name = request.GET.get('first_name', '')
last_name = request.GET.get('last_name', '')
Q(
f_filer__filer_first_name__istartswith=first_name,
f_filer__filer_last_name__istartswith=last_name
) |
Q(f_filer__filer_first_name__istartswith=first_name) |
Q(f_filer__filer_last_name__istartswith=last_name)
Если ваше приложение интенсивно использует поиск, возможно, стоит поискать правильный бэкэнд для поиска.
Вы используете Postgres? Если это так, использование Django Postgres Полнотекстовый поиск , вероятно, упростит ситуацию и поможет сделать код более понятным.
Если вы не используете Postgres, настройка бэкэнда поиска с помощью django-haystack даст вам аналогичные преимущества и позволит пользователям создавать запросы, подобные Google, используя AutoQuery . Например, используя -
, чтобы исключить термин и кавычки для точной фразы.