Only allow QNode instances to be passed as query objects
This commit is contained in:
parent
ab4d4e6230
commit
148f8b8a3a
2 changed files with 11 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue