From 3efa6195411f46dcffb0ee78b9a2ce7dc1876421 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Tue, 22 Jun 2010 18:09:25 +0000 Subject: [PATCH] [soc2010/query-refactor] Implemented __in. git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/query-refactor@13384 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/mongodb/compiler.py | 1 + tests/regressiontests/mongodb/tests.py | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/django/contrib/mongodb/compiler.py b/django/contrib/mongodb/compiler.py index 3a1a14fd14..9937e91345 100644 --- a/django/contrib/mongodb/compiler.py +++ b/django/contrib/mongodb/compiler.py @@ -10,6 +10,7 @@ class SQLCompiler(object): "lt": lambda params, value_annotation, negated: {"$lt": params[0]}, "isnull": lambda params, value_annotation, negated: {"$ne": None} if value_annotation == negated else None, "gt": lambda params, value_annotation, negated: {"$gt": params[0]}, + "in": lambda params, value_annotation, negated: {"$in": params}, } def __init__(self, query, connection, using): diff --git a/tests/regressiontests/mongodb/tests.py b/tests/regressiontests/mongodb/tests.py index 2f3177fa61..13177ffa9f 100644 --- a/tests/regressiontests/mongodb/tests.py +++ b/tests/regressiontests/mongodb/tests.py @@ -258,3 +258,29 @@ class MongoTestCase(TestCase): ], lambda g: g.name, ) + + def test_in(self): + q = Group.objects.create(name="Queen", year_formed=1971) + e = Group.objects.create(name="The E Street Band", year_formed=1972) + + self.assertQuerysetEqual( + Group.objects.filter(year_formed__in=[1972]), [ + "The E Street Band", + ], + lambda g: g.name, + ) + + self.assertQuerysetEqual( + Group.objects.filter(year_formed__in=[1972, 1971]), [ + "Queen", + "The E Street Band", + ], + lambda g: g.name + ) + + self.assertQuerysetEqual( + Group.objects.exclude(year_formed__in=[1972]), [ + "Queen", + ], + lambda g: g.name, + )