diff --git a/awx/main/tests/unit/utils/test_filters.py b/awx/main/tests/unit/utils/test_filters.py index ecfd8a0c12..47670d8d9d 100644 --- a/awx/main/tests/unit/utils/test_filters.py +++ b/awx/main/tests/unit/utils/test_filters.py @@ -114,13 +114,13 @@ class TestSmartFilterQueryFromString(): @pytest.mark.parametrize("filter_string,q_expected", [ - ('search=foo', Q(Q(**{u"name": u"foo"}) | Q(**{ u"description": u"foo"}))), - ('group__search=foo', Q(Q(**{u"group__name": u"foo"}) | Q(**{u"group__description": u"foo"}))), + ('search=foo', Q(Q(**{u"name__contains": u"foo"}) | Q(**{ u"description__contains": u"foo"}))), + ('group__search=foo', Q(Q(**{u"group__name__contains": u"foo"}) | Q(**{u"group__description__contains": u"foo"}))), ('search=foo and group__search=foo', Q( - Q(**{u"name": u"foo"}) | Q(**{ u"description": u"foo"}), - Q(**{u"group__name": u"foo"}) | Q(**{u"group__description": u"foo"}))), + Q(**{u"name__contains": u"foo"}) | Q(**{ u"description__contains": u"foo"}), + Q(**{u"group__name__contains": u"foo"}) | Q(**{u"group__description__contains": u"foo"}))), ('search=foo or ansible_facts__a=null', - Q(Q(**{u"name": u"foo"}) | Q(**{u"description": u"foo"})) | + Q(Q(**{u"name__contains": u"foo"}) | Q(**{u"description__contains": u"foo"})) | Q(**{u"ansible_facts__contains": {u"a": u"null"}})), ]) def test_search_related_fields(self, mock_get_host_model, filter_string, q_expected): diff --git a/awx/main/utils/filters.py b/awx/main/utils/filters.py index 9ce6162498..5442a329a1 100644 --- a/awx/main/utils/filters.py +++ b/awx/main/utils/filters.py @@ -51,7 +51,7 @@ class SmartFilter(object): search_kwargs = self._expand_search(k, v) if search_kwargs: kwargs.update(search_kwargs) - q = reduce(lambda x, y: x | y, [django.db.models.Q(**{u'%s' % _k:_v}) for _k, _v in kwargs.items()]) + q = reduce(lambda x, y: x | y, [django.db.models.Q(**{u'%s__contains' % _k:_v}) for _k, _v in kwargs.items()]) self.result = Host.objects.filter(q) else: kwargs[k] = v