Refactored the implementation of DynamicField extension for storing data in order

This commit is contained in:
Hiroyasu OHYAMA 2017-04-06 00:42:11 +00:00
parent ffbb2c9689
commit d8b238d5f1
2 changed files with 3 additions and 2 deletions

View File

@ -202,7 +202,7 @@ class DeReference(object):
as_tuple = isinstance(items, tuple) as_tuple = isinstance(items, tuple)
iterator = enumerate(items) iterator = enumerate(items)
data = [] data = []
elif type(items) == OrderedDict: elif isinstance(items, OrderedDict):
is_list = False is_list = False
iterator = items.iteritems() iterator = items.iteritems()
data = OrderedDict() data = OrderedDict()

View File

@ -5,6 +5,7 @@ import re
import time import time
import uuid import uuid
import warnings import warnings
from collections import Mapping
from operator import itemgetter from operator import itemgetter
from bson import Binary, DBRef, ObjectId, SON from bson import Binary, DBRef, ObjectId, SON
@ -621,7 +622,7 @@ class DynamicField(BaseField):
def __init__(self, container_class=dict, *args, **kwargs): def __init__(self, container_class=dict, *args, **kwargs):
self._container_cls = container_class 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 ' self.error('The class that is specified in `container_class` parameter '
'must be a subclass of `dict`.') 'must be a subclass of `dict`.')