Возможное решение вашего вопроса может быть решено, если ваша база данных поддерживает полнотекстовый поиск.Я использую Postgresql ( см. Документацию ) и смог заставить работать следующий запрос:
print User.objects.all().extra(where =
["to_tsvector(coalesce(first_name) || coalesce(last_name))
@@ to_tsquery('BarackObama')"])
Вы заметите, что я использовал полное имя в запросе.Мои знания о текстовом поиске ограничены, и я не знаю, есть ли способ сделать эквивалент __startswith
(реализован с использованием LIKE
).
Я подозреваю, что это будет излишним для вашегонеобходимо.Для реализации этого может быть лучше добавить пользовательское поле или пользовательский метод или их комбинацию.