From 328e062ae96b31b3c4095370ddf11e261dd367b2 Mon Sep 17 00:00:00 2001 From: Aleksandr Sorokoumov Date: Mon, 24 Feb 2014 18:52:07 +0400 Subject: [PATCH] Distinct method bugfix Creation of instances is executed now only for EmbeddedDocumentField and GenericEmbeddedDocumentField in distinct method --- mongoengine/queryset/base.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index c2ad027e..485872d7 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -630,7 +630,10 @@ class BaseQuerySet(object): # We may need to cast to the correct type eg. ListField(EmbeddedDocumentField) doc_field = getattr(self._document._fields.get(field), "field", None) instance = getattr(doc_field, "document_type", False) - if instance: + EmbeddedDocumentField = _import_class('EmbeddedDocumentField') + GenericEmbeddedDocumentField = _import_class('GenericEmbeddedDocumentField') + if instance and isinstance(doc_field, (EmbeddedDocumentField, + GenericEmbeddedDocumentField)): distinct = [instance(**doc) for doc in distinct] return distinct