From 26a413507abb38f7eee4cf62f2ee9727fdc7bf8d Mon Sep 17 00:00:00 2001 From: Alix Date: Tue, 26 May 2020 17:53:18 +0200 Subject: Fixed #6933 -- Added support for searching against quoted phrases in ModelAdmin.search_fields. --- django/contrib/admin/options.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'django') diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index b895378d37..e628afbe76 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -44,7 +44,9 @@ from django.utils.decorators import method_decorator from django.utils.html import format_html from django.utils.http import urlencode from django.utils.safestring import mark_safe -from django.utils.text import capfirst, format_lazy, get_text_list +from django.utils.text import ( + capfirst, format_lazy, get_text_list, smart_split, unescape_string_literal, +) from django.utils.translation import gettext as _, ngettext from django.views.decorators.csrf import csrf_protect from django.views.generic import RedirectView @@ -1022,7 +1024,9 @@ class ModelAdmin(BaseModelAdmin): if search_fields and search_term: orm_lookups = [construct_search(str(search_field)) for search_field in search_fields] - for bit in search_term.split(): + for bit in smart_split(search_term): + if bit.startswith(('"', "'")): + bit = unescape_string_literal(bit) or_queries = [models.Q(**{orm_lookup: bit}) for orm_lookup in orm_lookups] queryset = queryset.filter(reduce(operator.or_, or_queries)) -- cgit v1.3