From f2fe58c3c5d01e49accc7c48356adbb6694d8693 Mon Sep 17 00:00:00 2001 From: Hiroyasu OHYAMA Date: Wed, 8 Mar 2017 10:25:41 +0000 Subject: [PATCH] Added a condition to store data to ObjectDict when the items type is it Previous dereference implementation re-contains data as `dict` except for the predicted type. But the OrderedDict is not predicted, so the its data would be converted `dict` implicitly. As the result, the order of stored data get wrong. And this patch prevents it. --- mongoengine/dereference.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mongoengine/dereference.py b/mongoengine/dereference.py index 59204d4d..c11449b9 100644 --- a/mongoengine/dereference.py +++ b/mongoengine/dereference.py @@ -1,3 +1,4 @@ +from collections import OrderedDict from bson import DBRef, SON import six @@ -201,6 +202,10 @@ class DeReference(object): as_tuple = isinstance(items, tuple) iterator = enumerate(items) data = [] + elif type(items) == OrderedDict: + is_list = False + iterator = items.iteritems() + data = OrderedDict() else: is_list = False iterator = items.iteritems()