From 556eed0151ea845bef1cb761f84cc07cadf4329c Mon Sep 17 00:00:00 2001 From: Harry Marr Date: Sun, 3 Oct 2010 15:22:47 +0100 Subject: [PATCH] QuerySet.distinct respects query. Closes #64. --- mongoengine/queryset.py | 2 +- tests/queryset.py | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/mongoengine/queryset.py b/mongoengine/queryset.py index 016430d1..48936e68 100644 --- a/mongoengine/queryset.py +++ b/mongoengine/queryset.py @@ -649,7 +649,7 @@ class QuerySet(object): .. versionadded:: 0.4 """ - return self._collection.distinct(field) + return self._cursor.distinct(field) def only(self, *fields): """Load only a subset of this document's fields. :: diff --git a/tests/queryset.py b/tests/queryset.py index 62cf4954..2271c366 100644 --- a/tests/queryset.py +++ b/tests/queryset.py @@ -1038,9 +1038,13 @@ class QuerySetTest(unittest.TestCase): self.Person(name='Mr Orange', age=20).save() self.Person(name='Mr White', age=20).save() self.Person(name='Mr Orange', age=30).save() - self.assertEqual(self.Person.objects.distinct('name'), - ['Mr Orange', 'Mr White']) - self.assertEqual(self.Person.objects.distinct('age'), [20, 30]) + self.Person(name='Mr Pink', age=30).save() + self.assertEqual(set(self.Person.objects.distinct('name')), + set(['Mr Orange', 'Mr White', 'Mr Pink'])) + self.assertEqual(set(self.Person.objects.distinct('age')), + set([20, 30])) + self.assertEqual(set(self.Person.objects(age=30).distinct('name')), + set(['Mr Orange', 'Mr Pink'])) def test_custom_manager(self): """Ensure that custom QuerySetManager instances work as expected.