Skip to content

Commit fae0467

Browse files
committed
Merge pull request #90 from emperorcezar/master
Fixing issue #85
2 parents 4814421 + 128038a commit fae0467

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

django_mongodb_engine/compiler.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,12 @@ def add_filters(self, filters, query=None):
239239
else:
240240
existing.update(lookup)
241241
else:
242-
# {'$gt': o1} + {'$lt': o2} --> {'$gt': o1, '$lt': o2}
243-
assert all(key not in existing for key in lookup.keys()), [lookup, existing]
244-
existing.update(lookup)
242+
if '$in' in lookup and '$in' in existing:
243+
existing['$in'] = list(set(lookup['$in'] + existing['$in']))
244+
else:
245+
# {'$gt': o1} + {'$lt': o2} --> {'$gt': o1, '$lt': o2}
246+
assert all(key not in existing for key in lookup.keys()), [lookup, existing]
247+
existing.update(lookup)
245248
else:
246249
key = '$nin' if self._negated else '$all'
247250
existing.setdefault(key, []).append(lookup)

tests/query/tests.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,13 @@ def test_multiple_filter_on_same_name(self):
234234
[]
235235
)
236236

237+
# Tests chaining on primary keys
238+
blog_id = Blog.objects.get().id
239+
self.assertEqual(
240+
Blog.objects.filter(pk = blog_id).filter(pk = blog_id).get(),
241+
Blog.objects.get()
242+
)
243+
237244
def test_negated_Q(self):
238245
blogs = [Blog.objects.create(title=title) for title in
239246
('blog', 'other blog', 'another blog')]

0 commit comments

Comments
 (0)