From d8b238d5f172ec058952046b50921d879e7bc826 Mon Sep 17 00:00:00 2001 From: Hiroyasu OHYAMA Date: Thu, 6 Apr 2017 00:42:11 +0000 Subject: [PATCH] Refactored the implementation of DynamicField extension for storing data in order --- mongoengine/dereference.py | 2 +- mongoengine/fields.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mongoengine/dereference.py b/mongoengine/dereference.py index c11449b9..f30b2c15 100644 --- a/mongoengine/dereference.py +++ b/mongoengine/dereference.py @@ -202,7 +202,7 @@ class DeReference(object): as_tuple = isinstance(items, tuple) iterator = enumerate(items) data = [] - elif type(items) == OrderedDict: + elif isinstance(items, OrderedDict): is_list = False iterator = items.iteritems() data = OrderedDict() diff --git a/mongoengine/fields.py b/mongoengine/fields.py index 70061e08..a3b0f883 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -5,6 +5,7 @@ import re import time import uuid import warnings +from collections import Mapping from operator import itemgetter from bson import Binary, DBRef, ObjectId, SON @@ -621,7 +622,7 @@ class DynamicField(BaseField): def __init__(self, container_class=dict, *args, **kwargs): self._container_cls = container_class - if not issubclass(self._container_cls, dict): + if not issubclass(self._container_cls, Mapping): self.error('The class that is specified in `container_class` parameter ' 'must be a subclass of `dict`.')