Fixes resolving to db_field from class field name, in distinct() query.

This commit is contained in:
bool.dev 2013-04-04 08:24:35 +05:30
parent 9f58bc9207
commit 782d48594a
2 changed files with 19 additions and 0 deletions

View File

@ -1214,6 +1214,8 @@ class QuerySet(object):
.. versionchanged:: 0.5 - Fixed handling references
.. versionchanged:: 0.6 - Improved db_field refrence handling
"""
field = [field]
field = self._fields_to_dbfields(field).pop()
return self._dereference(self._cursor.distinct(field), 1,
name=field, instance=self._document)

View File

@ -2481,6 +2481,23 @@ class QuerySetTest(unittest.TestCase):
self.assertEqual(Foo.objects.distinct("bar"), [bar])
def test_distinct_handles_db_field(self):
"""Ensure that distinct resolves field name to db_field as expected.
"""
class Product(Document):
product_id=IntField(db_field='pid')
Product.drop_collection()
product_one = Product(product_id=1).save()
product_two = Product(product_id=2).save()
product_one_dup = Product(product_id=1).save()
self.assertEqual(set(Product.objects.distinct('product_id')),
set([1, 2]))
Product.drop_collection()
def test_custom_manager(self):
"""Ensure that custom QuerySetManager instances work as expected.
"""