diff --git a/mongoengine/queryset.py b/mongoengine/queryset.py index 5a1aa718..e987da91 100644 --- a/mongoengine/queryset.py +++ b/mongoengine/queryset.py @@ -423,6 +423,9 @@ class QuerySet(object): """ query = Q(**query) if q_obj: + # make sure proper query object is passed + if not isinstance(q_obj, QNode): + raise InvalidQueryError('Not a query object: %s. Did you intend to use key=value?' % q_obj) query &= q_obj self._query_obj &= query self._mongo_query = None diff --git a/tests/test_queryset.py b/tests/test_queryset.py index 55531a1e..c49566cf 100644 --- a/tests/test_queryset.py +++ b/tests/test_queryset.py @@ -1289,6 +1289,14 @@ class QuerySetTest(unittest.TestCase): self.assertEqual(len(self.Person.objects(Q(age__in=[20]))), 2) self.assertEqual(len(self.Person.objects(Q(age__in=[20, 30]))), 3) + # Test invalid query objs + def wrong_query_objs(): + self.Person.objects('user1') + def wrong_query_objs_filter(): + self.Person.objects('user1') + self.assertRaises(InvalidQueryError, wrong_query_objs) + self.assertRaises(InvalidQueryError, wrong_query_objs_filter) + def test_q_regex(self): """Ensure that Q objects can be queried using regexes. """