summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorAlix <alix@spacefoot.com>2020-05-26 17:53:18 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-06-18 20:17:20 +0200
commit26a413507abb38f7eee4cf62f2ee9727fdc7bf8d (patch)
treecda26a7382c5158bbad510ccc7b80612f921d0ad /django
parent8a902b7ee622ada258d15fb122092c1f02b82698 (diff)
Fixed #6933 -- Added support for searching against quoted phrases in ModelAdmin.search_fields.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/options.py8
1 files changed, 6 insertions, 2 deletions
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))