Changed neq to ne, fixed Q object in and nin
This commit is contained in:
parent
89f505bb13
commit
b2588d1c4f
@ -33,14 +33,14 @@ class Q(object):
|
|||||||
AND = '&&'
|
AND = '&&'
|
||||||
OPERATORS = {
|
OPERATORS = {
|
||||||
'eq': 'this.%(field)s == %(value)s',
|
'eq': 'this.%(field)s == %(value)s',
|
||||||
'neq': 'this.%(field)s != %(value)s',
|
'ne': 'this.%(field)s != %(value)s',
|
||||||
'gt': 'this.%(field)s > %(value)s',
|
'gt': 'this.%(field)s > %(value)s',
|
||||||
'gte': 'this.%(field)s >= %(value)s',
|
'gte': 'this.%(field)s >= %(value)s',
|
||||||
'lt': 'this.%(field)s < %(value)s',
|
'lt': 'this.%(field)s < %(value)s',
|
||||||
'lte': 'this.%(field)s <= %(value)s',
|
'lte': 'this.%(field)s <= %(value)s',
|
||||||
'lte': 'this.%(field)s <= %(value)s',
|
'lte': 'this.%(field)s <= %(value)s',
|
||||||
'in': 'this.%(field)s.indexOf(%(value)s) != -1',
|
'in': '%(value)s.indexOf(this.%(field)s) != -1',
|
||||||
'nin': 'this.%(field)s.indexOf(%(value)s) == -1',
|
'nin': '%(value)s.indexOf(this.%(field)s) == -1',
|
||||||
'mod': '%(field)s %% %(value)s',
|
'mod': '%(field)s %% %(value)s',
|
||||||
'all': ('%(value)s.every(function(a){'
|
'all': ('%(value)s.every(function(a){'
|
||||||
'return this.%(field)s.indexOf(a) != -1 })'),
|
'return this.%(field)s.indexOf(a) != -1 })'),
|
||||||
@ -265,7 +265,7 @@ class QuerySet(object):
|
|||||||
def _transform_query(cls, _doc_cls=None, **query):
|
def _transform_query(cls, _doc_cls=None, **query):
|
||||||
"""Transform a query from Django-style format to Mongo format.
|
"""Transform a query from Django-style format to Mongo format.
|
||||||
"""
|
"""
|
||||||
operators = ['neq', 'gt', 'gte', 'lt', 'lte', 'in', 'nin', 'mod',
|
operators = ['ne', 'gt', 'gte', 'lt', 'lte', 'in', 'nin', 'mod',
|
||||||
'all', 'size', 'exists']
|
'all', 'size', 'exists']
|
||||||
|
|
||||||
mongo_query = {}
|
mongo_query = {}
|
||||||
@ -283,7 +283,7 @@ class QuerySet(object):
|
|||||||
|
|
||||||
# Convert value to proper value
|
# Convert value to proper value
|
||||||
field = fields[-1]
|
field = fields[-1]
|
||||||
if op in (None, 'neq', 'gt', 'gte', 'lt', 'lte'):
|
if op in (None, 'ne', 'gt', 'gte', 'lt', 'lte'):
|
||||||
value = field.prepare_query_value(value)
|
value = field.prepare_query_value(value)
|
||||||
elif op in ('in', 'nin', 'all'):
|
elif op in ('in', 'nin', 'all'):
|
||||||
# 'in', 'nin' and 'all' require a list of values
|
# 'in', 'nin' and 'all' require a list of values
|
||||||
|
@ -331,6 +331,15 @@ class QuerySetTest(unittest.TestCase):
|
|||||||
|
|
||||||
BlogPost.drop_collection()
|
BlogPost.drop_collection()
|
||||||
|
|
||||||
|
# Check the 'in' operator
|
||||||
|
self.Person(name='user1', age=20).save()
|
||||||
|
self.Person(name='user2', age=20).save()
|
||||||
|
self.Person(name='user3', age=30).save()
|
||||||
|
self.Person(name='user4', age=40).save()
|
||||||
|
|
||||||
|
self.assertEqual(len(self.Person.objects(Q(age__in=[20]))), 2)
|
||||||
|
self.assertEqual(len(self.Person.objects(Q(age__in=[20, 30]))), 3)
|
||||||
|
|
||||||
def test_exec_js_query(self):
|
def test_exec_js_query(self):
|
||||||
"""Ensure that queries are properly formed for use in exec_js.
|
"""Ensure that queries are properly formed for use in exec_js.
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user