Skip to content

Commit e735be2

Browse files
committed
Fix #29 -- Do not filter based on empty search term
1 parent 07054b2 commit e735be2

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

django_select2/forms.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -400,13 +400,14 @@ def filter_queryset(self, request, term, queryset=None, **dependent_fields):
400400
search_fields = self.get_search_fields()
401401
select = Q()
402402

403-
for field in search_fields:
404-
field_select = Q(**{field: term})
405-
if "contains" in field:
406-
for word in filter(None, self._word_split_pattern.split(term)):
407-
field_select |= Q(**{field: word})
408-
409-
select |= field_select
403+
if term != "":
404+
for field in search_fields:
405+
field_select = Q(**{field: term})
406+
if "contains" in field:
407+
for word in filter(None, self._word_split_pattern.split(term)):
408+
field_select |= Q(**{field: word})
409+
410+
select |= field_select
410411

411412
if dependent_fields:
412413
select &= Q(**dependent_fields)

tests/test_forms.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,16 @@ def test_filter_queryset(self, genres):
446446
)
447447
assert qs.exists()
448448

449+
def test_filter_queryset__empty(self, genres):
450+
widget = TitleModelSelect2Widget(queryset=Genre.objects.all())
451+
assert widget.filter_queryset(None, genres[0].title[:3]).exists()
452+
453+
widget = TitleModelSelect2Widget(
454+
search_fields=["title__icontains"], queryset=Genre.objects.all()
455+
)
456+
qs = widget.filter_queryset(None, "")
457+
assert qs.exists()
458+
449459
def test_filter_queryset__startswith(self, genres):
450460
genre = Genre.objects.create(title="Space Genre")
451461
widget = TitleModelSelect2Widget(queryset=Genre.objects.all())

0 commit comments

Comments
 (0)