Skip to content

Commit 72c6a43

Browse files
committed
[soc2010/query-refactor] Implemented __lt lookups for MongoDB.
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/query-refactor@13359 bcc190cf-cafb-0310-a4f2-bffc1f526a37
1 parent d19cba9 commit 72c6a43

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

django/contrib/mongodb/compiler.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def get_filters(self, where, correct=False):
2525
return filters
2626

2727
def make_atom(self, lhs, lookup_type, value_annotation, params_or_value, negated):
28-
assert lookup_type in ["exact", "isnull"], lookup_type
28+
assert lookup_type in ["exact", "isnull", "lt"], lookup_type
2929
if hasattr(lhs, "process"):
3030
lhs, params = lhs.process(lookup_type, params_or_value, self.connection)
3131
else:
@@ -47,6 +47,8 @@ def make_atom(self, lhs, lookup_type, value_annotation, params_or_value, negated
4747
if value_annotation == negated:
4848
val = {"$not": val}
4949
return column, val
50+
elif lookup_type == "lt":
51+
return column, {"$lt": params[0]}
5052

5153
def correct_filters(self, filters):
5254
for k, v in filters.items():

tests/regressiontests/mongodb/tests.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def test_foreignkey(self):
5858
self.assertFalse(hasattr(b, "_current_group_cache"))
5959
self.assertEqual(b.current_group, e)
6060

61-
def test_lookup(self):
61+
def test_not_equals(self):
6262
q = Group.objects.create(name="Queen", year_formed=1971)
6363
e = Group.objects.create(name="The E Street Band", year_formed=1972)
6464

@@ -80,3 +80,29 @@ def test_lookup(self):
8080
],
8181
lambda g: g.name,
8282
)
83+
84+
def test_less_than(self):
85+
q = Group.objects.create(name="Queen", year_formed=1971)
86+
e = Group.objects.create(name="The E Street Band", year_formed=1972)
87+
88+
self.assertQuerysetEqual(
89+
Group.objects.filter(year_formed__lt=1980), [
90+
"Queen",
91+
"The E Street Band",
92+
],
93+
lambda g: g.name
94+
)
95+
96+
self.assertQuerysetEqual(
97+
Group.objects.filter(year_formed__lt=1972), [
98+
"Queen",
99+
],
100+
lambda g: g.name
101+
)
102+
103+
self.assertQuerysetEqual(
104+
Group.objects.filter(year_formed__lt=1971),
105+
[],
106+
lambda g: g.name
107+
)
108+

0 commit comments

Comments
 (0)