Fixed #6933 -- Added support for searching against quoted phrases in ModelAdmin.search_fields.

This commit is contained in:
Alix 2020-05-26 17:53:18 +02:00 committed by Mariusz Felisiak
parent 8a902b7ee6
commit 26a413507a
4 changed files with 41 additions and 8 deletions

View file

@ -1309,14 +1309,18 @@ subclass::
WHERE (first_name ILIKE '%john%' OR last_name ILIKE '%john%')
AND (first_name ILIKE '%lennon%' OR last_name ILIKE '%lennon%')
The search query can contain quoted phrases with spaces. For example, if a
user searches for ``"john winston"`` or ``'john winston'``, Django will do
the equivalent of this SQL ``WHERE`` clause:
.. code-block:: sql
WHERE (first_name ILIKE '%john winston%' OR last_name ILIKE '%john winston%')
If you don't want to use ``icontains`` as the lookup, you can use any
lookup by appending it the field. For example, you could use :lookup:`exact`
by setting ``search_fields`` to ``['first_name__exact']``.
Beware that because query terms are split and ANDed as described earlier,
searching with :lookup:`exact` only works with a single search word since
two or more words can't all be an exact match unless all words are the same.
Some (older) shortcuts for specifying a field lookup are also available.
You can prefix a field in ``search_fields`` with the following characters
and it's equivalent to adding ``__<lookup>`` to the field:
@ -1334,6 +1338,10 @@ subclass::
:meth:`ModelAdmin.get_search_results` to provide additional or alternate
search behavior.
.. versionchanged:: 3.2
Support for searching against quoted phrases with spaces was added.
.. attribute:: ModelAdmin.show_full_result_count
Set ``show_full_result_count`` to control whether the full count of objects