diff --git a/mongoengine/base/datastructures.py b/mongoengine/base/datastructures.py index ed6a46cc..466b5e88 100644 --- a/mongoengine/base/datastructures.py +++ b/mongoengine/base/datastructures.py @@ -211,7 +211,7 @@ class EmbeddedDocumentList(BaseList): def __match_all(cls, i, kwargs): items = kwargs.items() return all([ - getattr(i, k) == v or str(getattr(i, k)) == v for k, v in items + getattr(i, k) == v or unicode(getattr(i, k)) == v for k, v in items ]) @classmethod diff --git a/tests/fields/fields.py b/tests/fields/fields.py index b87c4366..2d60a4ba 100644 --- a/tests/fields/fields.py +++ b/tests/fields/fields.py @@ -4046,6 +4046,17 @@ class EmbeddedDocumentListFieldTestCase(unittest.TestCase): # modified self.assertEqual(number, 2) + def test_unicode(self): + """ + Tests that unicode strings handled correctly + """ + post = self.BlogPost(comments=[ + self.Comments(author='user1', message=u'сообщение'), + self.Comments(author='user2', message=u'хабарлама') + ]).save() + self.assertEqual(post.comments.get(message=u'сообщение').author, + 'user1') + def test_save(self): """ Tests the save method of a List of Embedded Documents.